You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.0 KiB
67 lines
2.0 KiB
"use strict"; |
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; |
|
|
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; |
|
|
|
exports.__esModule = true; |
|
exports["default"] = void 0; |
|
|
|
var _react = _interopRequireWildcard(require("react")); |
|
|
|
var _propTypes = _interopRequireDefault(require("prop-types")); |
|
|
|
var _Context = require("./Context"); |
|
|
|
var _Subscription = require("../utils/Subscription"); |
|
|
|
var _useIsomorphicLayoutEffect = require("../utils/useIsomorphicLayoutEffect"); |
|
|
|
function Provider(_ref) { |
|
var store = _ref.store, |
|
context = _ref.context, |
|
children = _ref.children; |
|
var contextValue = (0, _react.useMemo)(function () { |
|
var subscription = (0, _Subscription.createSubscription)(store); |
|
return { |
|
store: store, |
|
subscription: subscription |
|
}; |
|
}, [store]); |
|
var previousState = (0, _react.useMemo)(function () { |
|
return store.getState(); |
|
}, [store]); |
|
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () { |
|
var subscription = contextValue.subscription; |
|
subscription.onStateChange = subscription.notifyNestedSubs; |
|
subscription.trySubscribe(); |
|
|
|
if (previousState !== store.getState()) { |
|
subscription.notifyNestedSubs(); |
|
} |
|
|
|
return function () { |
|
subscription.tryUnsubscribe(); |
|
subscription.onStateChange = null; |
|
}; |
|
}, [contextValue, previousState]); |
|
var Context = context || _Context.ReactReduxContext; |
|
return /*#__PURE__*/_react["default"].createElement(Context.Provider, { |
|
value: contextValue |
|
}, children); |
|
} |
|
|
|
if (process.env.NODE_ENV !== 'production') { |
|
Provider.propTypes = { |
|
store: _propTypes["default"].shape({ |
|
subscribe: _propTypes["default"].func.isRequired, |
|
dispatch: _propTypes["default"].func.isRequired, |
|
getState: _propTypes["default"].func.isRequired |
|
}), |
|
context: _propTypes["default"].object, |
|
children: _propTypes["default"].any |
|
}; |
|
} |
|
|
|
var _default = Provider; |
|
exports["default"] = _default; |