尝试将我的单个reducer拆分为不同的reducer combineReducers
是redux为此提供的便利函数。 combineReducers
虽然将状态限制为具有至少每个第一级状态键的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
个关键字。
如何在不定义这些额外缩减器的情况下添加根级状态键值reducerA
& reducerB
或使用公共reducer reducerAB
添加父对象?这可能是使用combineReducers
还是我应该以不同的方式处理所需的行为?
答案 0 :(得分:2)
不,combineReducers
的预期用例是专门拆分维护每个状态片的逻辑,并将该工作委托给单独的函数。如果您确实希望同一个函数实例管理a
和b
,则需要将它们放在一个切片中(如state.ab.a
),或者使用除combineReducers
以某种方式。
您可能需要阅读Redux文档中的Structuring Reducers - Beyond combineReducers
部分,以了解有关组织减速器逻辑的其他方法以及Redux FAQ question on sharing state between reducers的一些讨论。