react-form-saver
Version:
A React hook to automatically save and restore form drafts with localStorage or sessionStorage.
29 lines (28 loc) • 1.08 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.useFormSaver = useFormSaver;
const react_1 = require("react");
function useFormSaver(key, initialValues, options) {
const storage = options?.storage || localStorage;
const interval = options?.interval || 1000;
const saved = storage.getItem(key);
const [values, setValues] = (0, react_1.useState)(saved ? JSON.parse(saved) : initialValues);
// Auto-save at intervals
(0, react_1.useEffect)(() => {
const id = setInterval(() => {
storage.setItem(key, JSON.stringify(values));
}, interval);
return () => clearInterval(id);
}, [values, key, storage, interval]);
// Handle form input changes
const handleChange = (e) => {
const { name, value } = e.target;
setValues((prev) => ({ ...prev, [name]: value }));
};
// Reset form + clear storage
const resetForm = () => {
setValues(initialValues);
storage.removeItem(key);
};
return { values, handleChange, setValues, resetForm };
}
;