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

useForm表单提交后控制台未打印输入数据问题

问题原因
  • 核心诱因是表单提交按钮未设置type="submit"属性。你代码中使用的是封装后的Button组件(常见于MUI、Antd等第三方UI库,或是自定义封装的按钮),这类组件默认type值为button,和原生button标签在表单内默认的submit类型不同,点击按钮时不会触发表单原生submit事件,因此不会执行handleSubmit包裹的校验、提交逻辑,控制台自然不会打印表单数据。
  • 次要排查项:确认已从useForm()的返回结果中正确解构出register、handleSubmit方法,漏解构会导致方法引用失效,不过这类问题一般会伴随控制台显式报错,优先级低于按钮类型问题。
  • 边缘场景:如果按钮类型设置正确仍不触发,需要检查是否有父级元素拦截了点击事件的冒泡,或是三个配置了required规则的输入框存在未填写的情况——react-hook-form校验不通过时不会执行onSubmit回调。
解决方案
  • 给提交按钮添加type="submit"属性,修改后的按钮代码如下:
    <Button type="submit" className='sendMail_send'>Send</Button>
    

    如果是自己封装的Button组件,需要确保type等原生属性可以正确透传到底层的原生button DOM节点,否则属性添加后不会生效。

  • 确认useForm初始化、解构的写法符合规范,参考标准写法:
    import { useForm } from 'react-hook-form';
    
    // 组件内部逻辑
    const { register, handleSubmit } = useForm();
    const onSubmit = (data) => {
      console.log(data);
    };
    
  • 填写表单时确保to、subject、message三个必填项都有输入内容,校验通过后才会触发提交回调。

内容的提问来源于stack exchange,提问作者vishal kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:54:15