/
kaws
/
ui-kit-ce
Обзор
Документация
Войти
/
kaws
/
ui-kit-ce
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
packages/hooks/src/useLocalStorage/useLocalStorage.ts
38 строк
973 B
Полюхов Владислав Вадимович
feat(styler-sync): реализован механизм синхронизации со Styler
06 ноя 2024, 10:57
06 ноя 2024, 10:57
76e3ad9
Код
Авторство
О чём код?
import * as React from 'react' /** @deprecated Используйте хук `useStorage` */ export const useLocalStorage = <T>( key: string, initialValue: T ): readonly [T, (value: T | ((val: T) => T)) => void] => { const [storedValue, setStoredValue] = React.useState<T>(() => { try { const item = window.localStorage.getItem(key) return item ? (JSON.parse(item) as T) : initialValue } catch (error) { // eslint-disable-next-line console.log(error) return initialValue } }) const setValue = (value: T | ((val: T) => T)) => { try { const valueToStore = value instanceof Function ? value(storedValue) : value setStoredValue(valueToStore) } catch (error) { // eslint-disable-next-line console.log(error) } } React.useEffect(() => { window.localStorage.setItem(key, JSON.stringify(storedValue)) }, [storedValue, key]) return [storedValue, setValue] as const }