validation - 使用 Yup 检查数组是否包含字符串

标签 validation yup

如果我的数组包含某个字符串,我正在尝试在表单中创建一个必填字段。

例如,如果数组 familyMembers 包含“spouse”,则应需要字段“spouseName”。是否可以使用 .when() 函数检查数组中的值?我用它来检查表单其他部分中字符串的值,如下所示:

jobTitle: Yup.string().when("jobStatus", {
    is: "employed",
    then: Yup.string().required(requiredError)
  })

有没有办法做这样的事情:

spouseName: Yup.string().when("familyMembers", {
    contains: "spouse",
    then: Yup.string().required(requiredError)
  })

最佳答案

您可以将第二个参数作为对象传递,而不是将其作为函数传递,该函数从第一个参数接收字段值(在您的情况下是 familyMembers 的值)以及要修改的架构(在您的情况下,添加必填)。

您可以在文档 mixed.when 中了解如何执行此操作(这是最后一个例子)。

例如来自文档

yup.object({
  isBig: yup.boolean(),
  count: yup.number().when('isBig', (isBig, schema) => {
    return isBig ? schema.min(5) : schema.min(0);
  }),
});

所以在你的情况下,它应该是这样的

spouseName: Yup.string().when("familyMembers", (familyMembers, schema) => {
    // if it includes 'spouse'
    return familyMembers.includes('spouse') ? 
        Yup.string().required(requiredError) : // add required validation
        schema; // don't change anything
  }),
})

您可以在函数内执行其他逻辑,也可以返回不同的架构类型。

关于validation - 使用 Yup 检查数组是否包含字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68475489/

相关文章:

javascript - 如何预览 beforeinput 事件的结果?

django - 删除自定义验证器后,Django 崩溃并且无法恢复到运行备份。漏洞?

eclipse - 如何在 Eclipse 中关闭特定项目的验证?

javascript - Yup.string().matches() 在您输入时交替显示有效和无效

reactjs - 是的,i18n 不能正常工作

draftjs - 通过 Formik 中的 yup 验证draft-js EditorState

python - 在有效性检查后从 python 列表中删除项目

xml - 使用 VS 代码验证 XML

reactjs - 是的,验证对象数组最多包含一个对象,其中属性 = 值

javascript - 是的,验证表单字段是否以其他输入字段的值开头