UNPKG

react-pauseable-containers

Version:
31 lines 1.57 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PauseableReduxContainer = void 0; const prop_types_1 = __importDefault(require("prop-types")); const react_1 = __importDefault(require("react")); const react_redux_1 = require("react-redux"); const redux_pauseable_store_1 = require("redux-pauseable-store"); const PauseableReduxContainer = (props) => { const { dispatchWhenPaused, shouldUpdate, children } = props; const parentStore = (0, react_redux_1.useStore)(); const pauseableStore = react_1.default.useMemo(() => (0, redux_pauseable_store_1.createPauseableStore)(parentStore, { // A change to the `shouldUpdate` prop will already cause a rerender, so we don't need an extra notification notifyListersOnUnpause: false, }), [parentStore]); pauseableStore.setPaused(!shouldUpdate); pauseableStore.setDispatch(dispatchWhenPaused); return react_1.default.createElement(react_redux_1.Provider, { store: pauseableStore }, children); }; exports.PauseableReduxContainer = PauseableReduxContainer; PauseableReduxContainer.defaultProps = { dispatchWhenPaused: null, }; PauseableReduxContainer.propTypes = { children: prop_types_1.default.node.isRequired, dispatchWhenPaused: prop_types_1.default.bool, shouldUpdate: prop_types_1.default.bool.isRequired, }; //# sourceMappingURL=PauseableReduxContainer.js.map