,如果我设计了还原器,而不是仅阅读部分状态,就可以访问完整状态树吗?
,是否有任何不便?所以而不是写这篇文章:
function reducer(state = {}, action) {
return {
a: doSomethingWithA(state.a, action),
b: processB(state.b, action),
c: c(state.c, action)
}
}
i破坏性状态doSomethingWithA
内部,c
或processB
还原器,分别:
function reducer(state = {}, action) {
return {
a: doSomethingWithA(state, action), // calc next state based on a
b: processB(state, action), // calc next state based on b
c: c(state, action) // calc next state based on a, b and c
}
}
我会使用更多RAM吗?性能不便吗?我了解在JavaScript中,始终将参考作为参数传递,这就是为什么如果要更新状态或使用不可能的js来执行不变性,我们应该返回一个新对象的原因,所以...再次,这是否会带来任何不便完全?
不,这没什么错。将更新逻辑编写为单个函数而不是单独的通量"商店"的部分原因是它可以使您明确控制依赖关系链。如果更新state.b
的逻辑取决于首先更新state.a
,则可以执行此操作。
您可能需要阅读REDUX文档中的"结构还原器"部分,尤其是combineReducers
主题。除了典型的combineReducers
方法外,它讨论了其他各种还原结构。我还在我的博客文章实用redux,第7部分:更改处理,数据编辑和功能还原器中给出了一些示例。