验证规则与错误消息
应用内置验证规则(required、minLength、pattern),并显示错误消息。
验证规则与错误消息 是 CoddyKit 上的免费 React Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 React Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 React Academy 课程共包含 4 节课。
欢迎
在本课中,您将为 React Hook Form 字段添加内置验证规则,并在每个输入字段下方显示易于用户理解的错误消息。
内置验证规则
将规则对象作为 register() 的第二个参数传入。内置规则包括:`required`、`minLength`、`maxLength`、`min`、`max`、`pattern` 和 `validate`。
<input
{...register('email', {
required: 'Email is required',
pattern: {
value: /^[^@]+@[^@]+\.[^@]+$/,
message: 'Invalid email address',
},
})}
/>必填字段
将 `required` 设置为字符串即可使字段成为必填字段。该字符串会成为错误消息。将其设置为 `true` 则使用通用消息。
register('name', { required: 'Name is required' })
// or
register('name', { required: true })长度限制
将 `minLength` 和 `maxLength` 与 `{ value, message }` 对象结合使用,以设置字符限制和自定义错误消息。
register('username', {
minLength: { value: 3, message: 'At least 3 characters' },
maxLength: { value: 20, message: 'At most 20 characters' },
})模式验证
`pattern` 规则接受 RegExp 值。您可以使用它验证电子邮件格式、电话号码或任意字符串模式。
register('phone', {
pattern: {
value: /^[0-9]{10,11}$/,
message: 'Enter a valid phone number',
},
})显示错误
从 formState 中读取 `errors` 对象。每个验证失败的字段都会有一个包含 `message` 属性的条目。根据条件将它渲染在输入字段下方。
const { register, handleSubmit, formState: { errors } } = useForm();
<input {...register('email', { required: 'Required' })} />
{errors.email && <p className="error">{errors.email.message}</p>}使用 validate 进行自定义验证
`validate` 规则接受一个函数:有效时返回 `true`,无效时返回错误字符串。当内置规则无法表达业务逻辑时,请使用它。
register('age', {
validate: value =>
parseInt(value) >= 18 || 'You must be at least 18',
})多个自定义验证器
向 `validate` 传入一个包含命名验证器的对象,即可对同一字段运行多个自定义检查。
register('password', {
validate: {
hasUpper: v => /[A-Z]/.test(v) || 'Needs uppercase',
hasDigit: v => /[0-9]/.test(v) || 'Needs a number',
}
})显示错误数量
统计错误总数,以启用或禁用提交按钮,或显示错误摘要。使用 Object.keys(errors).length。
const hasErrors = Object.keys(errors).length > 0;
<button type="submit" disabled={hasErrors}>Submit</button>设置错误输入字段的样式
为存在错误的输入字段应用 CSS 类,以显示红色边框效果。检查 errors[fieldName],根据条件应用该类。
<input
{...register('email', { required: true })}
className={errors.email ? 'input-error' : ''}
/>快速检查
在 React Hook Form 中,如何显示名为 'email' 的字段的错误消息?
回顾
将验证规则作为 register() 的第二个参数添加:必填、minLength、maxLength、模式、min、最大值和验证。从 formState 中读取 errors[fieldName].message,以显示消息。
接下来
下一课:**使用 Zod 进行架构验证**——您将集成 @hookform/resolvers 和 Zod 架构,实现类型安全的表单验证。
常见问题解答
「验证规则与错误消息」课时是免费的吗?
是的 — 「验证规则与错误消息」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 React Academy 课程的其余内容,请升级到 CoddyKit PRO。 React Academy 课程共包含 4 节课。
「验证规则与错误消息」这节课中我会学到什么?
应用内置验证规则(required、minLength、pattern),并显示错误消息。 你通过在浏览器中直接运行的动手代码来练习 React Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 React Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 React Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「验证规则与错误消息」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 React Academy 课中编写并运行代码吗?
能。每节 React Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。