import { useEffect, useState } from "react"; type TPersisntentStateReturn = [T, (val: T) => void]; export const usePersistentState = ( initialValue: T, persistenceKey: string ): TPersisntentStateReturn => { const [val, setVal] = useState(initialValue); useEffect(() => { const temp = localStorage.getItem(persistenceKey); if (temp) { const { key } = JSON.parse(temp); setVal(key); } }, []); const setState = (state: T) => { localStorage.setItem(persistenceKey, JSON.stringify({ key: state })); setVal(state); }; return [val, setState]; };