UNPKG

oneframe-react

Version:

Oneframe React ## Components, Hooks, Helper Functions & State Management

33 lines (32 loc) 1.26 kB
"use strict"; 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]; };