尝试将我的单个 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
});
我想保留
reducerC
和 reducerD
来处理状态上的各个对象,但是我需要有一个用于状态上的 a
和 b
键的通用 reducer 。如何在不定义这些额外的 reducer
reducerA
和 reducerB
或添加具有通用 reducer reducerAB
的父对象的情况下添加根级状态键值?这可以使用 combineReducers
还是我应该以不同的方式处理所需的行为? 最佳答案
不,combineReducers
的预期用例是专门拆分用于维护每个状态切片的逻辑,并将该工作委托(delegate)给单独的功能。如果您确实希望 a
和 b
由完全相同的函数实例管理,您要么需要将它们放在一个切片中(如 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/