prometheus/web/ui/react-app/src/hooks/useLocalStorage.tsx

14 lines
548 B
TypeScript
Raw Normal View History

import { Dispatch, SetStateAction, useEffect, useState } from 'react';
export function useLocalStorage<S>(localStorageKey: string, initialState: S): [S, Dispatch<SetStateAction<S>>] {
2020-02-03 06:14:25 -08:00
const localStorageState = JSON.parse(localStorage.getItem(localStorageKey) || JSON.stringify(initialState));
const [value, setValue] = useState(localStorageState);
useEffect(() => {
const serializedState = JSON.stringify(value);
localStorage.setItem(localStorageKey, serializedState);
}, [localStorageKey, value]);
return [value, setValue];
}