如何使用Yup根据条件设置验证架构?格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Yup根据条件设置验证架构?格式相关的知识,希望对你有一定的参考价值。

我正在尝试使用Yup验证数组中的数据。例如,这是我的initialValue:

{name:'',extra:[]}

动态渲染表单字段后,initialValue将变为:

{name:'',extra:[{label:'age',value:'',required:true}]}

我想设置验证方案以仅在'required'为true时验证对象中的'value'。

我使用此数据来模拟情况:

{name:'john',extra:[{label:'age',value:'',required:true}]};

我尝试过的方法:

const validationschema = yup.object().shape({
 name: yup.string().required(),
  extra: yup.lazy((value,index)=>{
    return yup.mixed().required();
  })
})

用户提交时应该有一个错误,因为年龄的“值”为空。我不确定为什么,我无法真正验证“价值”。如何更改验证模式,以便可以验证“值”?

答案

尝试验证:

name: yup.string().required(),
extra: yup.array()
  .of(
   yup.object().shape({
     required: yup.bool(),
     value: yup.object().when('required', {
       is: true,
       then: yup.string().required('Please, select position')
     }),
   })
  )

您应在此处检查字段required。如果它是true,则验证它。

以上是关于如何使用Yup根据条件设置验证架构?格式的主要内容,如果未能解决你的问题,请参考以下文章

Yup条件最大长度验证一个字段

如何添加 yup 或验证材料表

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

我如何在yup中验证对象内部的对象?

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

Null 被设置为 Formik 中空字符串的初始值,而反应原生中的 Yup 表单验证