reactjs - 是的/使用 Formik 文件上传验证

标签 reactjs formik yup

我在 Formik 上使用 Yup,但遇到了问题,我需要验证我的文件上传。验证有效,但我遇到了问题,因为我无法在没有文件的情况下提交表单。我需要使它 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))

最佳答案

这里的问题是两个.test使其无效。value => value && value.size <= FILE_SIZEvalue => value && SUPPORTED_FORMATS.includes(value.type)每次都会失败valueundefinednull ,但它不应该因您所说的而失败。
所以你需要做一些检查。如果valuenullundefined ,它是有效的,但如果不是,则进行其他检查。
所以你需要的是

attachment: Yup.mixed()
    .nullable()
    .notRequired()
    .test("FILE_SIZE", "Uploaded file is too big.", 
        value => !value || (value && value.size <= FILE_SIZE))
    .test("FILE_FORMAT", "Uploaded file has unsupported format.", 
        value => !value || (value && SUPPORTED_FORMATS.includes(value.type)))

关于reactjs - 是的/使用 Formik 文件上传验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62515683/

相关文章:

reactjs - 有没有办法让 React 子组件显示为字符串,带有缩进、回车和 jsx 语法糖?

reactjs - React Formik + 是的,onChange 触摸了字段

reactjs - React Formik 中未选中复选框

javascript - YUP 验证——如何获取值

node.js - 如何使用nodejs获取Mongodb查询集中每列的唯一值

reactjs - 使用react-leaflet渲染GeoJSON

javascript - react js Formik <Form/> resetForm() 不工作

javascript - yup.js 在条件时检查数组

node.js - npm start 以 - fatal error : MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory 结束

reactjs - 使用 Formik : Objects are not valid as a React child 处理 React 中的错误