Reference
useReducer
Stores reducer-managed component state and returns the current state with a dispatch function.
Signature
function useReducer<TState, TAction, TInitial>(reducer: (state: TState, action: TAction): TState, initialArg: TInitial, init?: (initialArg: TInitial): TState): [TState, (action: TAction): void]