You need to enable JavaScript to run this app. react-hook-form v7 ErrorMessage组件样式异常及重复显示问题求助
优惠活动
大模型
产品
解决方案
定价
更多

react-hook-form v7 ErrorMessage组件样式异常及重复显示问题求助

React Hook Form v7 ErrorMessage 问题排查方案

问题1:错误信息重复出现

你的代码中对name字段同时声明了两个<ErrorMessage>组件:

  • 第一个使用as="p"属性渲染错误
  • 第二个使用render属性自定义渲染错误
    二者都会监听name字段的错误状态,触发错误时会同时渲染,自然出现重复内容。直接删除任意一个<ErrorMessage>组件即可解决。

问题2:无法复现官方示例的错误提示样式

有两个常见原因:

  • 未正确安装引入@hookform/error-message依赖:ErrorMessage不是react-hook-form核心库内置组件,需要单独安装该依赖,并在头部引入:
import { ErrorMessage } from '@hookform/error-message';
  • 未添加自定义错误样式:官方示例的错误样式是额外自定义的,你可以在组件上添加样式即可复现效果,示例修改后代码如下:
<form onSubmit={handleSubmit(onSubmit)} id="contactform">
  <input
    type="text"
    placeholder="Name"
    name="name"
    {...register("name", {
      required: "Name is Required",
      minLength: {
        value: 3,
        message: "Please enter your name"
      }
    })}
  />
  {/* 保留一个ErrorMessage即可,这里用render自定义样式举例 */}
  <ErrorMessage
    errors={errors}
    name="name"
    render={({ message }) => <p style={{color: '#dc2626', fontSize: '0.875rem', margin: '0.25rem 0 0 0'}}>{message}</p>}
  />
  <input
    type="tel"
    placeholder="Mobile Number"
    name="mobile"
    {/* 补充:该输入框目前没有绑定register,不会触发校验,如果需要校验手机号要加上register逻辑 */}
    {...register('mobile', { required: '手机号为必填项' })}
  />
</form>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 00:24:01