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