Redux Thunk无法派发action,控制台提示dispatch不是函数,请问配置哪里出错?
问题根因
你在Redux中间件配置环节传入了错误的参数:applyMiddleware 接收的是Redux中间件实例,你错误传入了自己定义的thunk类型action creator fetch,导致Redux的dispatch链路被破坏,所以触发action时会提示dispatch is not a function。
注释中间件后普通同步action可以正常运行,是因为同步action不需要中间件处理,走Redux原生dispatch逻辑即可生效。
修复步骤
- 首先确保已安装redux-thunk依赖:
npm install redux-thunk # 或 yarn add redux-thunk
- 修改store配置代码,导入thunk中间件替换原来传入的自定义
fetch:
// 顶部导入thunk中间件 import thunk from 'redux-thunk' const store = createStore(root, compose( applyMiddleware(thunk), window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() ) )
补充优化建议
- 你自定义的异步action creator命名为
fetch,和浏览器原生的fetch API重名,容易出现作用域冲突,建议改成fetchTodoData之类的语义化命名。 - reducer中用到的
ADD_DATA、INCREMENT_COUNT等action type常量,需要确保已提前定义并正确导入,否则action匹配逻辑会失效。
内容的提问来源于stack exchange,提问作者user16050054
相关产品推荐
相关产品推荐

