17 lines
480 B
JavaScript
17 lines
480 B
JavaScript
import { useEffect } from 'react';
|
|
|
|
const DEFAULT_STATE_KEY = 'state';
|
|
|
|
export const usePersistedContext = (context, key = DEFAULT_STATE_KEY) => {
|
|
const persistedContext = localStorage.getItem(key);
|
|
return persistedContext ? JSON.parse(persistedContext) : context;
|
|
};
|
|
|
|
export const usePersistedReducer = ([state, dispatch], key = DEFAULT_STATE_KEY) => {
|
|
useEffect(
|
|
() => localStorage.setItem(key, JSON.stringify(state)),
|
|
[state],
|
|
);
|
|
return [state, dispatch];
|
|
};
|