react-use-event-reducer
Version:
A React hook for reducing state from strongly typed events.
13 lines (12 loc) • 531 B
TypeScript
export declare type Handlers<State, Events> = {
[Key in keyof Events]: (state: State, payload: Events[Key]) => State;
};
declare type Emitter<Payload> = Payload extends undefined ? (payload?: undefined) => void : (payload: Payload) => void;
export declare type Emitters<Events> = {
[K in keyof Events]: Emitter<Events[K]>;
};
export declare function useEventReducer<State, Events extends Record<string, any>>(handlers: Handlers<State, Events>, initial: State): {
state: State;
emit: Emitters<Events>;
};
export {};