You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React父子组件传值时报错props.onSubmitForm is not a function如何解决

报错原因

props.onSubmitForm is not a function 报错的核心是子组件获取到的onSubmitForm属性不是函数类型。你贴出的父子组件传值逻辑本身没有问题,报错大概率是以下几种场景导致的:

  • 父组件引入子组件的路径错误,实际引入的不是你编写的UserDetails组件,导致传入的属性失效
  • 项目其他位置调用了UserDetails组件,但没有传入onSubmitForm属性,或者传入的属性值不是函数
  • 属性名拼写存在大小写错误,React的组件属性大小写敏感,比如onSubmitform和onSubmitForm会被识别为两个不同属性
  • 子组件内对props做了解构赋值但遗漏了onSubmitForm字段(你贴出的代码中没有这个问题,可自行核对完整代码)
解决方案
  1. 先避免报错:在子组件调用props.onSubmitForm前加类型判断,先解决控制台报错问题再排查根因:
const submittedFormhandler = (event) => {
  event.preventDefault();
  let userDetails = {
    name: name,
    age: age
  };
  // 新增类型判断
  if (typeof props.onSubmitForm === 'function') {
    props.onSubmitForm(userDetails);
  } else {
    console.warn('onSubmitForm 不是有效函数,请检查传入属性', props);
  }
};
  1. 核对组件引入路径:确认DisplayDetails中引入UserDetails的路径和实际文件位置匹配,比如两个组件在同级目录下,引入路径应该是./UserDetails而非../UserDetails。
  2. 核对所有UserDetails调用位置:全局搜索项目中所有<UserDetails />的调用,确保每一处都传入了onSubmitForm属性,且属性值是一个可执行的函数。
  3. 日志调试:在子组件的提交函数里打印完整props,确认onSubmitForm是否存在、类型是否正确,就能快速定位到属性丢失的原因。

内容的提问来源于stack exchange,提问作者MARTIN GITAU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:48:03