我正在开发一个 Redux 项目,其中包含一堆组合的减速器
const rootReducer = combineReducers({
reducer1,
reducer2,
...
});
每个 reducer 更新 store 的一个分支
sampleStore = {
reducer1: {a1: 7, b1: 5, c1: 6, ...},
reducer2: {a2: 3, b2: 2, c2: 9, ...},
reducer3: {a3: 1, b3: 4, c3: 2, ...},
...
}
现在我正在尝试添加需要访问商店的两个分支而不重构整个项目的逻辑。例如,我想要一个能够执行以下操作的减速器:set c3 = f(a1, a2)
.
目前我正在尝试使用重新选择,但我迷路了。在 reducer1/selector.js 我有
export const derivedVariableSelector = createSelector(
a1Selector,
a2Selector,
(a1, a2) => a1 + a2
);
我正在尝试创建一个减速器
function setC3(state) {
return Object.assign({}, state, {
c3: state.c3 + derivedVariableSelector(state)
});
}
但是,当调用 setC3 时,derivedVariableSelector 将永远不会收到足够的存储来完成其工作。它要么接收包含 a1 的分支,要么接收包含 a2 的分支,但我不知道如何同时提供这两者。这可能吗?