diff options
Diffstat (limited to 'src/hooks')
| -rw-r--r-- | src/hooks/useForm.js | 20 | ||||
| -rw-r--r-- | src/hooks/useLocalStorage.js | 17 | 
2 files changed, 37 insertions, 0 deletions
| diff --git a/src/hooks/useForm.js b/src/hooks/useForm.js new file mode 100644 index 0000000..6270c1e --- /dev/null +++ b/src/hooks/useForm.js @@ -0,0 +1,20 @@ +import useLocalStorage from "./useLocalStorage"; + +export default function useForm(formId) { +  const [forms, setForms] = useLocalStorage(`forms`, {}); + +  const form = forms[formId] || { fields: [], id: formId }; + +  function setForm(newForm) { +    console.log( +      "setForm", +      newForm, +      { ...forms, [newForm.id]: newForm }, +      { form: forms[formId], formId, forms }, +    ); +    setForms({ ...forms, [newForm.id]: newForm }); +  } + +  console.log("useForm", formId, form); +  return [form, setForm]; +} diff --git a/src/hooks/useLocalStorage.js b/src/hooks/useLocalStorage.js new file mode 100644 index 0000000..6dbed36 --- /dev/null +++ b/src/hooks/useLocalStorage.js @@ -0,0 +1,17 @@ +import { useState } from "react"; + +const useLocalStorage = (key, initialValue) => { +  const storedVal = localStorage[key] +    ? JSON.parse(localStorage[key]) || initialValue +    : initialValue; +  const [value, setValue] = useState(storedVal); + +  function update(newValue) { +    localStorage[key] = JSON.stringify(newValue); +    setValue(newValue); +  } + +  return [value, update]; +}; + +export default useLocalStorage; | 
