如何在2个联合减速器之间共享状态?

时间:2016-03-15 16:42:39

标签: javascript reactjs redux reducers

我使用了2个减速器并将它们组合在一起。在第一个减速器中,我有一些能够获得所有初始数据的东西(也与第二个减速器相关)。

如何在初始化/设置从第一个减速器到第二个减速器的状态下使用数据?

function reducer1(state = initialState, action = '') {
    switch (action.type) {
        case constants.INITIAL_DATA:

            returnstate.set('data', fromJS(document.data));
....

然后我结合了这两个减速器,我想访问"数据"来自他们两个。 (或将数据作为initialState传递给第二个reducer)

谢谢!

1 个答案:

答案 0 :(得分:2)

reducer应返回普通对象并且没有副作用。如果你想在2个不同的action.type情况下使用相同的状态,那么它们需要在同一个函数中,或者父函数需要将状态传递给不同的reducer函数,如下所示:

function parentReducer(state = {}, action = '') {
  switch (action.type) {
    case CASE_ONE:
      return childReducer1(state, action)
    case CASE_TWO:
      return childReducer2(state, action)
    default:
      return state
  }
}

但是这会带来一个重要的设计点:每个(顶级)reducer代表Redux状态树的一个独特分支,你可能总是设计你的数据存储,使树的不同部分不需要分享。在Redux中(查看DevTools),您只有一个对象,该对象的顶级键是顶级reducer函数的名称。

基本上,如果您认为需要在减速器中设置不同的状态,那么其他减速器可以使用它,这表明需要重新考虑商店的设计。

相关问题