Javascript 将动作创建者传递给Redux combinereducer()

Javascript 将动作创建者传递给Redux combinereducer(),javascript,redux,react-redux,Javascript,Redux,React Redux,我正在考虑在Redux/React应用程序中使用“”模块模式。我认为这种模式将reducer和action创建者都传递给了Redux的combinereducer()方法,我想知道为什么会这样。从文件中: // widgets.js // Actions const LOAD = 'my-app/widgets/LOAD'; // Reducer export default function reducer(state = {}, action = {}) { switch (ac

我正在考虑在Redux/React应用程序中使用“”模块模式。我认为这种模式将reducer和action创建者都传递给了Redux的
combinereducer()
方法,我想知道为什么会这样。从文件中:

// 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()
参数的reducer一起工作?函数的签名为:

combineReducers(reducers)
并且说减缩器必须是“其值对应于需要组合成一个的不同减缩函数的对象”。它说,
combineReducers()
“将通过向还原程序传递未定义的内容来检查还原程序”,还原程序必须遵循的规则包括“如果给定给它的
状态是
未定义的
,它必须返回此特定还原程序的初始状态”


在这个测试中,动作创建者显然没有返回初始状态,这种模式(Ducks)在Redux中很流行。我错过了什么?仅使用传入对象的
default
方法是否依赖于未记录的行为?这似乎不是Redux文档所建议的行为。

“以前的文档建议使用ES6 import*作为reducers语法来获取reducers对象。这是许多混淆的根源,这就是为什么我们现在建议从reducers/index.js导出使用combineReducers()获得的单个reducer。”@对根减速器(以及用于构建根减速器的链)有意义的Héctor。但在我看来,Ducks模式根本不起作用-动作创建者会被称为减缩器(并通过
状态
动作
),然后会失败,因为他们没有返回有效的状态对象。我认为未记录的部分就是“/Ducks/index.js”中的内容,这可能类似于:
从“/widgets”导入widgetsReducer
导出{widgetsReducer}“以前的文档建议使用ES6 import*作为reducers语法来获取reducers对象。这是许多混乱的根源,这就是为什么我们现在建议从reducers/index.js导出使用combineReducers()获取的单个reducer。”@Héctor对根reducer有意义(和用于构建根减速器的链)。但在我看来,鸭子模式根本不起作用-动作创建者将被称为减速器(并通过
状态
动作
),然后将失败,因为它们没有返回有效的状态对象。我认为未记录的部分是“/ducks/index.js”中的内容,这可能类似于:
从“/widgets”导入widgetsReducer;
导出{widgetsReducer};