chatbot-template/lib/hooks/use-local-storage.ts

27 lines
619 B
TypeScript
Raw Normal View History

2023-06-02 15:33:48 -04:00
import { useEffect, useState } from 'react'
2023-05-19 12:33:56 -04:00
const useLocalStorage = <T>(
key: string,
initialValue: T
): [T, (value: T) => void] => {
2023-06-02 15:33:48 -04:00
const [storedValue, setStoredValue] = useState(initialValue)
2023-05-19 12:33:56 -04:00
useEffect(() => {
// Retrieve from localStorage
2023-06-02 15:33:48 -04:00
const item = window.localStorage.getItem(key)
2023-05-19 12:33:56 -04:00
if (item) {
2023-06-02 15:33:48 -04:00
setStoredValue(JSON.parse(item))
2023-05-19 12:33:56 -04:00
}
2023-06-02 15:33:48 -04:00
}, [key])
2023-05-19 12:33:56 -04:00
const setValue = (value: T) => {
// Save state
2023-06-02 15:33:48 -04:00
setStoredValue(value)
2023-05-19 12:33:56 -04:00
// Save to localStorage
2023-06-02 15:33:48 -04:00
window.localStorage.setItem(key, JSON.stringify(value))
}
return [storedValue, setValue]
}
2023-05-19 12:33:56 -04:00
2023-06-02 15:33:48 -04:00
export default useLocalStorage