我正在尝试使用 Yup 进行条件表单验证,但无法更改值“showfile”的值

Posted

技术标签:

【中文标题】我正在尝试使用 Yup 进行条件表单验证,但无法更改值“showfile”的值【英文标题】:I am trying to do conditional form validation using Yup But am Unable to Change the value of value "showfile" 【发布时间】:2021-07-22 20:35:57 【问题描述】:

我在 react 中使用 formik 和 Yup 来处理表单数据和表单验证。我正在尝试将“Showfile”的值更改为 true 以进行条件验证但值没有改变。

文本域 标签="简历" 星号=“*” 颜色=“红色” 名称="文件" 类型=“文件” 接受=".pdf ,.docx,.doc " onChange=(事件) => formik.setFieldValue( “文件”, event.currentTarget.files[0], “演出文件”, 真的 ) 价值=formik.value /> 文件:Yup.mixed().when("showfile", 是真的, 然后:是的.mixed() .required("必填") 。测试( “文件大小”, "上传的文件太大。", (value) => value && value.size value && SUPPORTED_FORMATS.includes(value.type) ), 福米克 初始值= 用户名: ””, 电子邮件: ””, 电话: ””, 信息: ””, 文件: ””, 显示文件:假, 提交:假, 验证架构=验证 onSubmit=(值,操作)=> 设置超时(()=> 控制台.log(值); actions.setSubmitting(false); , 1000); >

【问题讨论】:

【参考方案1】:

您以错误的方式使用setFieldValue。它只更新一个字段。如果要设置2归档,则需要调用setFieldValue 2次:

onChange=(event) => 
    formik.setFieldValue("file", event.currentTarget.files[0]);
    formik.setFieldValue("showfile", true);

您可以在此处阅读有关setFieldValue 的更多信息:https://formik.org/docs/api/formik#setfieldvalue-field-string-value-any-shouldvalidate-boolean--void

【讨论】:

好的.. 已解决,但现在我在选择接受的文件后收到所需的错误消息....点击其他字段时它正在消失..... file 字段的值应该是什么...这里我给出了 value=formik.values.file 我认为您需要添加另一个答案,详细说明您的问题。之后,我可以看看,也许可以帮助你 感谢您的帮助...问题已解决...我在使用 Formik 和 Yup 验证文件字段时遇到了一个新问题...我已在此处发布我的问题... .***.com/questions/67323291/…

以上是关于我正在尝试使用 Yup 进行条件表单验证,但无法更改值“showfile”的值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用反应表单挂钩验证反应日期选择器

使用 Formik 和 Yup 和 React-select 进行验证

根据状态变量进行条件 Yup 验证

是的-密码验证

是的,对非必填字段进行验证

我如何用Yup验证Material-UI-电话号码?