redux-modules
Version:
A library for defining clear, boilerplate free Redux reducers.
36 lines (29 loc) • 1.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createFinalPropsSelector;
var _deepAssign = require('deep-assign');
var _deepAssign2 = _interopRequireDefault(_deepAssign);
var _createMapStateToProps = require('./createMapStateToProps');
var _createMapStateToProps2 = _interopRequireDefault(_createMapStateToProps);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function createFinalPropsSelector(mapStateToProps, mapDispatchToProps) {
var getState = (0, _createMapStateToProps2.default)(mapStateToProps);
var dispatch = void 0;
var lastMerged = void 0;
var lastOwn = void 0;
var lastState = void 0;
return function finalPropsSelector(state, props) {
var nextState = getState(state, props);
if (typeof dispatch === 'undefined') {
dispatch = mapDispatchToProps(dispatch, props);
}
if (lastOwn !== props || lastState !== nextState) {
lastMerged = (0, _deepAssign2.default)({}, nextState, dispatch, props);
lastOwn = props;
lastState = nextState;
}
return lastMerged;
};
}