UNPKG

hooks-me

Version:

<div align="center"> <h1>hooks-me</h1> <div>React useful hooks.</div>

33 lines (32 loc) 1.09 kB
import { useCallback, useState, useEffect } from "react"; export var useLocalStorage = function (key, defaultValue) { return useStorage(key, defaultValue, window.localStorage); }; export var useSessionStorage = function (key, defaultValue) { return useStorage(key, defaultValue, window.sessionStorage); }; var useStorage = function (key, defaultValue, storageObject) { var _a = useState(function () { var jsonValue = storageObject.getItem(key); if (jsonValue != null) { try { return JSON.parse(jsonValue); } catch (_a) { return jsonValue; } } return defaultValue; }), value = _a[0], setValue = _a[1]; useEffect(function () { if (!value) { return storageObject.removeItem(key); } storageObject.setItem(key, JSON.stringify(value)); }, [key, value, storageObject]); var remove = useCallback(function () { setValue(undefined); }, []); return [value, setValue, remove]; }; export default useStorage;