React调用props.createEntity报is not a function错误如何解决?
问题根因
从你打印的props内容可以看到,只有react-router注入的history/location/match三个属性,没有任何connect注入的dispatch相关属性,说明你当前使用的组件是未经过connect高阶函数包裹的原始组件。
解决方案
- 优先检查组件导入方式
你在代码中同时做了两个导出:
- 命名导出:
export const RealmUserUpdate(未经过connect处理的原始组件,没有注入createEntity方法) - 默认导出:
export default connect(...)(经过connect处理,会自动注入createEntity方法)
如果你在引用该组件的文件中使用的是命名导入:
import { RealmUserUpdate } from './RealmUserUpdate'
请修改为默认导入即可解决问题:
import RealmUserUpdate from './RealmUserUpdate'
- 辅助排查项
如果修改导入方式后仍报错,可检查两个配置:
- 确认redux store配置中已经注册了
redux-thunk中间件,你定义的createEntity是thunk风格的action creator,必须配合thunk中间件才能正常工作 - 确认没有在组件内部其他位置意外覆盖了
props.createEntity属性
额外注意点
你定义的useLocation泛型LocationState是{userId: number | string},但实际打印的location.state是直接的数字类型,后续构造实体时如果需要兼容类型,建议调整为const location = useLocation<number | string>(),避免类型报错。
内容的提问来源于stack exchange,提问作者Jack23
相关产品推荐
相关产品推荐

