/
laborgit
/
laborgit-frontend
Обзор
Документация
Войти
/
laborgit
/
laborgit-frontend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
src/hooks/useLocalStorage.ts
36 строк
999 B
gdev2018
TSKLBRGTFRNT-30 start Stickers
01 дек 2025, 20:38
01 дек 2025, 20:38
60bb802
Код
Авторство
О чём код?
// hooks/useLocalStorage.ts import { useState, useEffect } from "react"; export function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T) => void] { const [storedValue, setStoredValue] = useState<T>(() => { try { const item = window.localStorage.getItem(key); return item ? JSON.parse(item) : initialValue; } catch (error) { console.error(error); return initialValue; } }); const setValue = (value: T) => { try { setStoredValue(value); window.localStorage.setItem(key, JSON.stringify(value)); } catch (error) { console.error(error); } }; useEffect(() => { const handleStorageChange = (e: StorageEvent) => { if (e.key === key && e.newValue) { setStoredValue(JSON.parse(e.newValue)); } }; window.addEventListener("storage", handleStorageChange); return () => window.removeEventListener("storage", handleStorageChange); }, [key]); return [storedValue, setValue]; }