File size: 579 Bytes
5a3b322 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import { useEffect, useState } from "react";
export function useLocalStorage<T>(key: string, initial: T): [T, (v: T) => void] {
const [value, setValue] = useState<T>(initial);
useEffect(() => {
try {
const stored = localStorage.getItem(key);
if (stored !== null) {
setValue(JSON.parse(stored));
}
} catch (_) {}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
useEffect(() => {
try {
localStorage.setItem(key, JSON.stringify(value));
} catch (_) {}
}, [key, value]);
return [value, setValue];
}
|