尝试将我的单个 reducer 拆分为不同的 reducer combineReducers 是 redux 为此目的提供的方便功能。 combineReducers 虽然将状态限制为特定状态,但至少每个第一级状态键都有一个 reducer 。因此,在某些情况下,您要么必须添加超出需要的 reducer ,要么必须更改状态的形状。

更具体地说,假设应用程序的商店是这样的:

let store = {
    a: true,
    b: false,
    c: {...}
    d: {...}
}

对于上面的商店,我需要为上面的每个键定义一个 reducer 并将它们组合起来,所以这将是这样的:
const reducerA = (state, action) => {...}
const reducerB = (state, action) => {...}
const reducerC = (state, action) => {...}
const reducerD = (state, action) => {...}

const rootReducer = combineReducers({
    a: reducerA,
    b: reducerB,
    c: reducerC,
    d: reducerD
});

我想保留 reducerCreducerD 来处理状态上的各个对象,但是我需要有一个用于状态上的 ab 键的通用 reducer 。

如何在不定义这些额外的 reducer reducerAreducerB 或添加具有通用 reducer reducerAB 的父对象的情况下添加根级状态键值?这可以使用 combineReducers 还是我应该以不同的方式处理所需的行为?

最佳答案

不,combineReducers 的预期用例是专门拆分用于维护每个状态切片的逻辑,并将该工作委托(delegate)给单独的功能。如果您确实希望 ab 由完全相同的函数实例管理,您要么需要将它们放在一个切片中(如 state.ab.a ),要么以某种方式使用 combineReducers 以外的其他东西。

您可能需要通读 Redux 文档中的 Structuring Reducers - Beyond combineReducers 部分,以了解有关组织 reducer 逻辑的其他方法以及 Redux FAQ question on sharing state between reducers 的一些讨论。

关于javascript - Redux: combineReducers 形状独立,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43762803/

10-11 11:29