繁体   English   中英

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

[英]How to share state between 2 combine reducers?

我有2个我使用和组合的减速器。 在第一个reducer中,我有一些东西可以获取所有初始数据(也与第二个reducer相关)。

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

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

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

然后我将这两个减速器组合在一起,我想从两个减速器中访问“数据”。 (或将数据作为initialState传递给第二个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
  }
}

但这带来了一个重要的设计要点:每个(顶级)reduceer代表Redux状态树的不同分支,并且您可能总是可以以不需要树的不同部分的方式设计数据存储。共享。 在Redux(签出DevTools)中,您有一个对象,该对象的顶级键是顶级reducer函数的名称。

基本上,如果您认为需要在化简器中设置其他状态,那么其他化简器可以使用该状态,则表明需要重新考虑商店的设计。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM