import { Dispatch, SetStateAction, useEffect, useState } from 'react'; type Response = [T, Dispatch>]; export function usePersistedState( key: string, initialState: any, ): Response { const [state, setState] = useState(() => { const storageValue = localStorage.getItem(key); if (storageValue) { return JSON.parse(storageValue); } return initialState; }); useEffect(() => { localStorage.setItem(key, JSON.stringify(state)); }, [key, state]); return [state, setState]; }