/
levkin_s
/
ui-kit-ce
Обзор
Документация
Войти
/
levkin_s
/
ui-kit-ce
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
packages/hooks/src/useLocalStorage/useLocalStorage.ts
37 строк
911 B
Denis Svyatovets
v1.10.0
27 мар 2024, 13:48
27 мар 2024, 13:48
c9029ae
Код
Авторство
О чём код?
import * as React from 'react' 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 }