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

react-hook-form自定义validate校验规则返回的提示信息不显示问题

问题根因及修复方案

1. 配置项传参位置错误

react-hook-form v6版本中,useFormContext仅用于消费上层FormProvider透传的表单实例,本身不支持传入mode等配置参数。你当前写在useFormContext中的mode: 'all'完全不生效,该配置需要放到上层初始化表单的useForm参数中:

// 上层表单根组件的初始化逻辑
const methods = useForm({
  mode: 'all'
})
// 透传给FormProvider
<FormProvider {...methods}>
  {/* 表单子组件 */}
</FormProvider>

2. 错误信息取值路径不匹配

v6版本内置校验规则(required、minLength等)的报错信息默认存放在errors[字段名].message字段下,但自定义validate规则的报错信息存放路径和规则写法绑定:

  • 如果是validate: { always: () => {} }的对象写法,报错信息存放在errors[字段名].types.always
  • 如果是validate: () => {}的直接函数写法,报错信息存放在errors[字段名].types.validate

你之前应该是统一取了errors[字段名].message,自然拿不到自定义校验的提示。你可以先打印完整的formState.errors结构确认报错已生成,再调整取值逻辑即可,示例如下:

// 假设你的表单项name为test
const testError = formState.errors.test
const errorMsg = testError?.message || Object.values(testError?.types || {})[0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:30:01