@zohodesk/hooks
Version:
Unified Component Library - Hooks
19 lines (16 loc) • 519 B
JavaScript
import { useReducer, useCallback } from "react";
export default function useCommonReducer(defaultReducer, customReducer, initialArg, init) {
const proxyReducer = (state, action) => {
let lastState = defaultReducer(state, action);
if (customReducer) {
return customReducer(lastState, action);
}
return lastState;
};
const memoProxyReducer = useCallback(proxyReducer, []);
const [state, dispatch] = useReducer(memoProxyReducer, initialArg, init);
return {
state,
dispatch
};
}