eip-components-web
Version:
EIP components
20 lines • 809 B
JavaScript
import { useState, useMemo, useEffect } from 'react';
const usePersistedState = (key, decode, encode, isLive, defaultState) => {
const [state, setState] = useState();
useEffect(() => {
const stringPersistedState = localStorage.getItem(key);
const persistedState = stringPersistedState
? decode(stringPersistedState)
: defaultState;
setState(persistedState);
}, [defaultState]);
const setPersistedState = useMemo(() => (newState) => {
const encodedState = encode(newState);
if (isLive)
setState(newState);
global?.localStorage?.setItem(key, encodedState);
}, [setState, key, encode]);
return [state, setPersistedState];
};
export default usePersistedState;
//# sourceMappingURL=usePersistedState.js.map