feature/share-libs
ts 24 lines 594 Bytes
Raw
1 import { useEffect, useState } from 'react'
2
3 export const useLocalStorage = <T>(
4 key: string,
5 initialValue: T
6 ): [T, (value: T) => void] => {
7 const [storedValue, setStoredValue] = useState(initialValue)
8
9 useEffect(() => {
10 // Retrieve from localStorage
11 const item = window.localStorage.getItem(key)
12 if (item) {
13 setStoredValue(JSON.parse(item))
14 }
15 }, [key])
16
17 const setValue = (value: T) => {
18 // Save state
19 setStoredValue(value)
20 // Save to localStorage
21 window.localStorage.setItem(key, JSON.stringify(value))
22 }
23 return [storedValue, setValue]
24 }