我可以始终将整个状态传递给还原器吗?



,如果我设计了还原器,而不是仅阅读部分状态,就可以访问完整状态树吗?

,是否有任何不便?

所以而不是写这篇文章:

function reducer(state = {}, action) {
  return {
    a: doSomethingWithA(state.a, action),
    b: processB(state.b, action),
    c: c(state.c, action)
  }
}

i破坏性状态doSomethingWithA内部,cprocessB还原器,分别:

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部分:更改处理,数据编辑和功能还原器中给出了一些示例。

最新更新