react-redux中mapDispatchToProps不生效,this.props.getCategories不是函数
问题1:App.js中导入了错误的Categories组件版本
你的Categories组件存在两个导出:
- 具名导出:
export class Categories,是未经redux connect处理的原始组件,不会自动注入action到props - 默认导出:
export default connect(...),是经过connect绑定了state和action的组件,props中会存在getCategories方法
你在App.js中用了大括号导入具名版本:import {Categories} from './Categories',这是错误的根源。
修复方法
修改App.js中的导入语句,去掉大括号,导入默认导出的版本:
// 修改前 // import {Categories} from './Categories'; // 修改后 import Categories from './Categories';
问题2:webpack导入警告排查
如果修改完组件导入后还存在警告,检查../actions/categories相关导入逻辑:
你当前的getCategories是具名导出:export const getCategories = () => ...,对应的导入写法import {getCategories} from '../actions/categories'是完全正确的。如果出现该警告,排查两个点:
- 确认action文件的文件名拼写正确,路径无误
- 确认你没有在组件中写过
import getCategories from '../actions/categories'这种错误的默认导入写法
验证修复效果
修改完成后重启开发服务,此时调用this.props.getCategories()不会再报类型错误,action会正常触发请求,reducer拿到数据后会更新store中的categories数组。
内容的提问来源于stack exchange,提问作者Mohammad AliAkbaryan
相关产品推荐
相关产品推荐

