redux - 如何在两个联合 reducer 之间共享状态?

标签 redux redux-reducers

我有 2 个 reducer ,我使用它们并将它们组合起来。在第一个 reducer 中,我有一些东西可以获取所有初始数据(这也与第二个 reducer 相关)。

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

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

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

            ....

然后我结合这两个reducer,我想从它们访问“数据”(或将数据作为initialState传递给第二个reducer)。

最佳答案

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 函数的名称。

基本上,如果您认为需要在 reducer 中设置不同的状态,以便其他 reducer 可以使用它,则表明需要重新考虑存储的设计。

关于redux - 如何在两个联合 reducer 之间共享状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36017192/

相关文章:

javascript - 构建自己的状态管理器而不是使用 Redux 或 Context API 是一种不好的做法吗?

javascript - 如何使用 Redux 动态添加输入?

javascript - (从默认导出导入)Redux 中的根 reducer 是否自动称为 'rootReducer' ?

reactjs - 如何调用createSlice中的其他reducer来改变状态?

javascript - Redux 工具包 : Uncaught TypeError: Cannot read properties of undefined (reading 'type' )

javascript - 如何使用 immer 对数组进行排序?

reactjs - redux-form 将值传递给 fieldarray 字段

javascript - 将非 ui 逻辑放在 react/redux 应用程序中的什么位置?

javascript - Redux thunk 获取返回未定义