我对Toolbar
非常陌生。
我一直在读它的' Reducers documentation,遇到了我似乎无法理解的Redux
函数。
他们注意到:
所有combineReducers()都会生成一个函数,使用根据键 选择的状态切片调用缩减器 ,并将其结果再次合并到单个对象中。 It's not magic
我确实理解它会像听起来一样返回一个组合的reducer,但它如何为每个reducer提供特定的相关状态片 - 根据其键是什么意思?
深入了解It's not magic git问题有助于我更多地了解combineReducers
的使用情况,但我仍然无法理解根据其键。
非常感谢任何解释,谢谢。
答案 0 :(得分:2)
A :如果您的状态切片和缩减器功能具有相似的名称 - 该缩减器将随该切片一起提供。
实施例
const state = {
slice1 : {...},
slice2 : {...}
}
function slice1(state, action){...}
function slice2(state, action){...}
combineReducers({slice1, slice2}) //Reducers will be provided with appropriate slices.
B :如果您为combineReducers
功能提供密钥,则这些密钥必须与状态切片密钥匹配。
实施例
const state = {
slice1 : {...},
slice2 : {...}
}
function reducer1(state, action){...}
function reducer2(state, action){...}
combineReducers({slice1 : reducer1,
slice2 : reducer2}) //Reducers will be provided with appropriate slices.
C :两种方法都可以混合使用:
实施例
const state = {
slice1 : {...},
slice2 : {...}
}
function slice1(state, action){...}
function reducer2(state, action){...}
combineReducers({slice1,
slice2 : reducer2}) //Reducers will be provided with appropriate slices.
答案 1 :(得分:1)
我认为如果您不熟悉新的ES6语法,可能会出现一些混淆。
如果查看redux文档,可以看到他们使用ES6 object literal shorthand syntax来定义对象形状
const rootReducer = combineReducers({
theDefaultReducer,
firstNamedReducer,
secondNamedReducer
});
这个简短的手实际上可以翻译成:
var rootReducer = combineReducers({
theDefaultReducer: theDefaultReducer,
firstNamedReducer: firstNamedReducer,
secondNamedReducer: secondNamedReducer
});
当您看到键与单独的单个Reducer匹配时,combineReducers就会知道要映射的内容。