import {useReducer, useCallback} from 'react'; import {produce} from 'immer'; function useMutableReducer(reducer, initialState, initialAction) { const mutableReducer = useCallback( (state, action) => { return produce(draft => { return reducer(draft, action, state); }); }, [reducer] ); return useReducer(mutableReducer, initialState, initialAction); }