UNPKG

refun

Version:

A collection of React Hook-enabled functions that compose harmoniously with each other. Similar to `recompose`, but:

58 lines (44 loc) 1.97 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.ReduxStateFactory = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _tsfn = require("tsfn"); var _utils = require("./utils"); var ReduxStateFactory = function ReduxStateFactory(context) { return function (mapStateToProps, stateKeysToWatch) { return function (props) { var _useState = (0, _react.useState)(_tsfn.EMPTY_OBJECT), _useState2 = (0, _slicedToArray2.default)(_useState, 2), rerender = _useState2[1]; var prevStateRef = (0, _react.useRef)(_tsfn.EMPTY_OBJECT); var prevStatePropsRef = (0, _react.useRef)(_tsfn.EMPTY_OBJECT); var store = (0, _react.useContext)(context); var onMountRef = (0, _react.useRef)(_tsfn.NOOP); if (prevStatePropsRef.current === _tsfn.EMPTY_OBJECT) { var newState = store.getState(); prevStateRef.current = newState; prevStatePropsRef.current = mapStateToProps(newState); } if (onMountRef.current === _tsfn.NOOP) { onMountRef.current = function () { return store.subscribe(function () { var newState = store.getState(); if (!(0, _utils.shallowEqualByKeys)(prevStateRef.current, newState, stateKeysToWatch)) { prevStatePropsRef.current = mapStateToProps(newState); rerender({}); } prevStateRef.current = newState; }); }; } (0, _react.useEffect)(onMountRef.current, _tsfn.EMPTY_ARRAY); return (0, _extends2.default)({}, props, prevStatePropsRef.current); }; }; }; exports.ReduxStateFactory = ReduxStateFactory; //# sourceMappingURL=redux-state-factory.js.map