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

react-hook-form中ctx.getValues()与onSubmit数据是否存在差异?

getValues() 与 onSubmit 返回值差异说明

二者并非完全等价,实际使用中存在多处明确差异,核心区别如下:

  • 字段包含范围不同:getValues()会直接返回所有已注册字段的瞬时内存值,无论字段是否处于disabled状态、是否符合校验规则,都会原样返回;onSubmit的入参会自动过滤掉处于禁用状态的字段,仅保留校验通过的有效字段。
  • 值处理逻辑不同:如果给字段配置了valueAsNumber/valueAsDate/自定义setValueAs转换规则,或是使用了Zod/Yup等自定义resolver做校验,getValues()返回的是RHF内部存储的原始输入值,不会经过转换、裁剪逻辑;onSubmit触发时会跑完所有值解析、resolver校验流程,返回的是经过规则转换、校验裁剪后的最终结构化值。
  • 默认值补全逻辑不同:对于注册后用户从未交互过的字段,部分场景下getValues()可能返回未初始化的undefined;onSubmit触发时会自动匹配useForm配置的defaultValues,补全未交互字段的默认值。

排查二者返回不一致问题时,可优先核对是否存在禁用字段、是否配置了值转换规则、是否接入了自定义校验解析器这三类高频场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:39:15