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
相关产品推荐
相关产品推荐

