检查数组是否包含字符串 Yup

时间:2021-07-21 19:33:18

标签: 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)
  })

1 个答案:

答案 0 :(得分:0)

不是将第二个参数作为对象传递,您可以将它作为一个函数传递,该函数接收来自第一个参数的字段值(在您的情况下是 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
  }),
})

您可以在函数内部执行其他逻辑并返回不同的模式类型。

相关问题