Reactjs 使用Formik/Yup进行可选文件验证

Reactjs 使用Formik/Yup进行可选文件验证,reactjs,forms,formik,yup,Reactjs,Forms,Formik,Yup,我想验证文件输入如果选择了文件,我找到了Formik/Yup的解决方案,但即使未选择文件,它也会验证 avatar: Yup.mixed() .test("fileSize", "File is too large", value => { return value && value.size <= FILE_SIZE; }) .test( "fileFormat", "Unsupported Format"

我想验证文件输入如果选择了文件,我找到了Formik/Yup的解决方案,但即使未选择文件,它也会验证

avatar: Yup.mixed()
    .test("fileSize", "File is too large", value => {
      return value && value.size <= FILE_SIZE;
    })
    .test(
      "fileFormat",
      "Unsupported Format",
      value => value && SUPPORTED_FORMATS.includes(value.type)
    )
avatar:Yup.mixed()
.test(“文件大小”,“文件太大”,值=>{
返回值&&value.size值&&SUPPORTED_格式。包括(value.type)
)

当我输入其他输入时,它会触发验证,我只想在文件存在的情况下触发它,因为avatar是可选的!

问题是测试仅在
值存在的情况下返回
true
(意味着它会验证)。您必须添加一个条件以在值不存在的情况下接受值(即:为
未定义

我遇到了完全相同的问题,我这样解决:

avatar:Yup.mixed()
.测试(
“文件大小”,
“文件太大”,
value=>!value | |(value&&value.size!value | |(value=>value&&SUPPORTED_格式。包括(value.type))
)

您可以共享代码沙盒吗?Formik,那么您使用了哪种方法?您尝试过吗?