UNPKG

usehooks-ts

Version:

React hook library, ready to use, written in Typescript.

52 lines 1.96 kB
import { useEffect, useState } from 'react'; import { useEventListener } from '../useEventListener'; function useLocalStorage(key, initialValue) { var readValue = function () { if (typeof window === 'undefined') { return initialValue; } try { var item = window.localStorage.getItem(key); return item ? parseJSON(item) : initialValue; } catch (error) { console.warn("Error reading localStorage key \u201C".concat(key, "\u201D:"), error); return initialValue; } }; var _a = useState(readValue), storedValue = _a[0], setStoredValue = _a[1]; var setValue = function (value) { if (typeof window == 'undefined') { console.warn("Tried setting localStorage key \u201C".concat(key, "\u201D even though environment is not a client")); } try { var newValue = value instanceof Function ? value(storedValue) : value; window.localStorage.setItem(key, JSON.stringify(newValue)); setStoredValue(newValue); window.dispatchEvent(new Event('local-storage')); } catch (error) { console.warn("Error setting localStorage key \u201C".concat(key, "\u201D:"), error); } }; useEffect(function () { setStoredValue(readValue()); }, []); var handleStorageChange = function () { setStoredValue(readValue()); }; useEventListener('storage', handleStorageChange); useEventListener('local-storage', handleStorageChange); return [storedValue, setValue]; } export default useLocalStorage; function parseJSON(value) { try { return value === 'undefined' ? undefined : JSON.parse(value !== null && value !== void 0 ? value : ''); } catch (error) { console.log('parsing error on', { value: value }); return undefined; } } //# sourceMappingURL=useLocalStorage.js.map