UNPKG

@zohodesk/hooks

Version:

Unified Component Library - Hooks

19 lines (16 loc) 519 B
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 }; }