我需要使用 zod 验证电子邮件和确认电子邮件,当我精炼检查电子邮件是否不匹配时,我想在这两个字段中显示我的错误,但它不适用于精炼中的
path
。
我正在尝试使用
path: ['emai', 'confirmEmail']
,但它不起作用,并且在表单上给了我一条未定义的消息。
const SignUpFormInputsSchema = z.object({
email: z
.string({
required_error: 'email is required.',
invalid_type_error: 'email is invalid.',
})
.email('email is invalid.'),
confirmEmail: z
.string({
required_error: 'email confirmation is required.',
invalid_type_error: 'email confirmation is invalid.',
})
.email('email is invalid.'),
})
.refine(
({ email, confirmEmail }) => {
return email === confirmEmail
},
{
message: 'emails must match.',
path: ['emai', 'confirmEmail'],
},
)
路径应反映您访问错误值的方式。您正在做的是尝试访问值
confirmEmail
的 obj.email
。在这种情况下,它将是 undefined
,因为 obj.email.confirmEmail
中没有任何内容
Zod 文档上的示例决定使用确认路径。