UNPKG

react-use-event-reducer

Version:

A React hook for reducing state from strongly typed events.

26 lines (25 loc) 956 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useEventReducer = void 0; var react_1 = require("react"); function useEventReducer(handlers, initial) { var reducer = react_1.useCallback(function (state, _a) { var event = _a.event, payload = _a.payload; return handlers[event](state, payload); }, [handlers]); var _a = react_1.useReducer(reducer, initial), state = _a[0], dispatch = _a[1]; var emit = react_1.useMemo(function () { var events = Object.keys(handlers); return events.reduce(function (emitters, event) { emitters[event] = (function (payload) { return dispatch({ event: event, payload: payload, }); }); return emitters; }, {}); }, [handlers, dispatch]); return { state: state, emit: emit }; } exports.useEventReducer = useEventReducer;