提问人:Rasil 提问时间:10/31/2023 最后编辑:Ken WhiteRasil 更新时间:10/31/2023 访问量:36
使用 yup 和 React Hook 表单处理文件验证
Handle File Validation Using Yup and React Hook Form
问:
所以,基本上,我有一个表格,我有作为字段之一。我希望此字段为必填项。<input type="file" />
const { register, handleSubmit } = useForm({
defaultValues,
resolver: yupResolver(schema),
});
<form onSubmit={handleSubmit(onSubmit)}>
<input type="text" {...register("fullname")} />
<input type="file" {...register("image")} />
</form>
我已使用yup进行验证模式:
const schema = yup.object().shape({
fullname: yup.string().required("Name is required"),
image: yup.mixed().required("Image is required"),
})
而且,我的 defaultValues 为:
const defaultValues: {
name: string,
image: File | null,
} = {
name: "",
image: null,
}
如果我这样做,我会收到一个错误,说
参数“values”和“values”的类型不兼容。
我认为原因是架构不允许图像为 null,而在 defaultValues 中,我最初将图像字段设置为 null。但是,如果我将图像字段设置为可为 null,则验证将不起作用,因为这意味着文件可以为空,但我不希望它在字段为空时抛出错误。
我该如何解决这个问题?
答:
0赞
Prashant Shah
10/31/2023
#1
该文件将有一个文件对象数组,因此您需要将图像类型设置为 File[],或者默认值为空数组,为了进行验证,您可以对空数组进行检查。
FYR,您可以在此处检查正确的图像类型
评论