oneframe-react
Version:
Oneframe React ## Components, Hooks, Helper Functions & State Management
33 lines (32 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = require("react");
exports.default = (key, initialValue = '') => {
const [value, setValue] = react_1.useState(() => JSON.parse(window.sessionStorage.getItem(key)) || initialValue);
const setItem = (newValue, remove = false) => {
if (!remove) {
setValue(newValue);
window.sessionStorage.setItem(key, JSON.stringify(newValue));
}
else {
window.sessionStorage.removeItem(key);
}
};
react_1.useEffect(() => {
const newValue = window.sessionStorage.getItem(key);
if (value !== newValue) {
setValue(newValue || initialValue);
}
}, [value, setValue, initialValue, key]);
const handleStorage = react_1.useCallback((event) => {
if (event.key === key && event.newValue !== value) {
const v = event.newValue || initialValue;
setValue(JSON.parse(v));
}
}, [value, key, initialValue]);
react_1.useEffect(() => {
window.addEventListener('storage', handleStorage);
return () => window.removeEventListener('storage', handleStorage);
}, [handleStorage]);
return [value, setItem];
};