我正在考虑使用" Ducks"带有Redux / React应用程序的模块模式。我认为这种模式正在将Reducer和action creators传递给Redux的combineReducers()
方法,我想知道为什么会这样。来自Ducks文档:
// widgets.js
// Actions
const LOAD = 'my-app/widgets/LOAD';
// Reducer
export default function reducer(state = {}, action = {}) {
switch (action.type) {
// do reducer stuff
default: return state;
}
}
// Action Creators
export function loadWidgets() {
return { type: LOAD };
}
然后结合减速器:
import { combineReducers } from 'redux';
import * as reducers from './ducks/index';
const rootReducer = combineReducers(reducers);
export default rootReducer;
为什么这与传入的动作创建者以及减速器一起作为combineReducers()
的参数? API documentation给出了函数签名:
combineReducers(reducers)
并说reducers
必须是"一个对象,其值对应于需要合并为一个"的不同缩减函数。它表示combineReducers()
"会通过将undefined传递给他们来检查你的Reducer",reducers必须遵循的规则包括"如果state
给它{ {1}},它必须返回此特定reducer的初始状态"。
在此测试期间,动作创建者显然没有返回初始状态,并且这种模式(Ducks)已经变得流行于Redux。我错过了什么?是否仅依靠未记录的行为来使用传入对象的undefined
方法?这似乎不是Redux文档建议的行为。