不能使用Redux applyMiddleware函数应用多个中间件

时间:2017-09-13 15:06:19

标签: javascript node.js reactjs redux redux-thunk

任何人都可以使用正确的redux store配置帮助我吗?

我正在尝试配置如下,

configureStore.js

import thunk from 'redux-thunk';
import logger from 'redux-logger';
import { createStore, applyMiddleware } from 'redux';
import rootReducer from '../reducers';

let middlewares = [thunk, logger]

const configureStore = () => {
  const store = createStore(
    rootReducer,
    applyMiddleware(...middlewares)  // I also tried with applyMiddleware(thunk, logger)
  );

  return store;
}

export default configureStore;

我导入此模块主js文件并使用如下,

index.js

import configureStore from '../stores/configureStore';

const store = configureStore();

// And other DOM render code follows...

但似乎无效,并且Web控制台中显示以下错误

错误:未捕获TypeError: WEBPACK_IMPORTED_MODULE_0__撰写 .a.apply(...)不是函数

Error

错误所在的文件: enter image description here

我正在关注reduxredux-thunkredux-logger的官方文档,但无法使其正常运行。

另一个注意事项:当我从中间件列表中删除thunklogger中的任何一个时,它工作正常。

  

更新:我获得了临时修复

redux3.7.2降级为3.5.2的工作正常。

我仍然想知道为什么最新版本的Redux存在问题。我尝试添加与该问题相关的更多信息,并为将来的升级寻找解决方案。

谢谢!

1 个答案:

答案 0 :(得分:0)

你犯了一个小错误。

来自官方docs,这是createStore的签名:

createStore(reducer, [preloadedState], [enhancer])

你混淆了参数的顺序,传递你的增强函数(applyMiddleware),其中函数期望preloadedState。您需要在rootReducer和applyMiddleware函数之间传入一个参数,以满足签名。

希望这有帮助!