UNPKG

minh-custom-hooks-release

Version:

Đây là custom hooks được viết bởi hoanggminh2702, bao gồm:

31 lines 1.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useLocalStorage; var react_1 = require("react"); function useLocalStorage(key) { // if (!global?.window?.localStorage) throw new Error('Must be used on client!') var _a = (0, react_1.useState)(function () { var _a; var getDataFromStorage = ((_a = window === null || window === void 0 ? void 0 : window.global) === null || _a === void 0 ? void 0 : _a.localStorage) ? global.window.localStorage.getItem(key) : null; return getDataFromStorage; }), data = _a[0], setData = _a[1]; var handleSetData = (0, react_1.useCallback)(function (data) { setData(function (prev) { return (data !== prev ? data : prev); }); global.window.localStorage.setItem(key, data); }, [key]); var handleResetData = (0, react_1.useCallback)(function () { setData(null); global.window.localStorage.removeItem(key); }, [key]); var handleLocalStorageChange = (0, react_1.useCallback)(function (ev) { ev.newValue !== ev.oldValue && setData(function (prev) { return (prev !== ev.newValue ? ev.newValue : prev); }); }, []); (0, react_1.useLayoutEffect)(function () { window.addEventListener('storage', handleLocalStorageChange); return function () { window.removeEventListener('storage', handleLocalStorageChange); }; }, [handleLocalStorageChange]); return [data, handleSetData, handleResetData]; } //# sourceMappingURL=useLocalStorage.js.map