我在使用Yup和Formik时遇到了问题,我需要验证我上传的文件。验证工作正常,但我面临着问题,因为我不能提交没有文件的表单。我需要使它成为notRequired,因为initialValue是未定义的,它测试未定义的值。
我的代码:
attachment: Yup.mixed()
.nullable()
.notRequired()
.test("FILE_SIZE", "Uploaded file is too big.", value => value && value.size <= FILE_SIZE)
.test("FILE_FORMAT", "Uploaded file has unsupported format.", value => value && SUPPORTED_FORMATS.includes(value.type))
3条答案
按热度按时间r6l8ljro1#
这里的问题是两个
.test
使它无效。每次
value
为undefined
或null
时,value => value && value.size <= FILE_SIZE
和value => value && SUPPORTED_FORMATS.includes(value.type)
都将失败,但不应按您所说的那样失败。所以你需要做一些检查,如果
value
是null
或者undefined
,那么它是有效的,但是如果不是,做其他的检查。所以你需要的是
rdlzhqv92#
您可以使用“useRef”访问文件大小。
别忘了定义FILE_SIZE。
您还可以检查文件格式:
zzzyeukh3#