将Action Creators传递给Redux combineReducers()

时间:2017-11-16 11:04:45

标签: javascript redux react-redux

我正在考虑使用" 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文档建议的行为。

0 个答案:

没有答案