【问题标题】:check if an array contains a string with Yup检查一个数组是否包含一个带有 Yup 的字符串
【发布时间】:2021-09-29 04:23:22
【问题描述】:

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

例如,如果数组 familyMembers 包含“配偶”,则字段“配偶姓名”应该是必需的。是否可以使用 .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)
  })

【问题讨论】:

    标签: validation yup


    【解决方案1】:

    除了将第二个参数作为对象传递之外,您还可以将其作为函数传递,该函数从第一个参数(在您的情况下为 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
      }),
    })
    

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

    【讨论】:

      猜你喜欢
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      相关资源
      最近更新 更多