1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-11-15 09:44:53 +01:00
market/src/hooks/useStoredValue.tsx

30 lines
664 B
TypeScript
Raw Normal View History

2020-05-07 08:03:30 +02:00
import { isBrowser } from '../utils'
import { useEffect, useState } from 'react'
function useStoredValue<T>(
key: string,
initialState: T
): [T, (newValue: T) => void] {
const [value, setValue] = useState<T>(initialState)
useEffect(() => {
if (isBrowser) {
const storedValue = localStorage.getItem(key)
if (storedValue) {
setValue(JSON.parse(storedValue) as T)
}
}
}, [])
const updateValue = (newValue: T) => {
if (isBrowser) {
localStorage.setItem(key, JSON.stringify(newValue))
}
setValue(JSON.parse(JSON.stringify(newValue)))
}
return [value, updateValue]
}
export default useStoredValue