state-synchronizers
Version:
Deterministically update state based on other state
17 lines (16 loc) • 712 B
JavaScript
;
exports.__esModule = true;
exports.createStateSynchronizer = void 0;
/**
* Works only for plain JS objects and top-level properties.
*
* @param dependenciesKeys Names of properties of state. When any changes, `updater` will be run.
* @returns A state synchronizer that runs the updater whenever a dependency changes.
*/
exports.createStateSynchronizer = function (updater, dependenciesKeys) { return function (state, previousState) {
var shouldSynchronizeState = dependenciesKeys.some(function (dependencyKey) { return state[dependencyKey] !== previousState[dependencyKey]; });
if (shouldSynchronizeState) {
return updater(state);
}
return state;
}; };