【问题标题】:How to validate an object with a key inside it in Yup Validation如何在 Yup Validation 中使用其中的键验证对象
【发布时间】:2020-08-27 07:57:55
【问题描述】:

这是我使用 Formik 的 React 应用程序中的一个 sn-p。

我的初始值是

initialValues: {
    country: { label: '', value: '' }
}

我的字段输入是country,这是一个Select 选项,选择时它的值将是

country: { label: 'India', value: 'India' }

当未选择country 时,我需要的error 对象应该是

{ country: "Please select a country" }

如何在未选择国家/地区时添加 yup 验证以获取所需的错误,或者在 country.value === '' 时以其他方式获得所需的错误?

我写了一个这样的验证

country: yup.object().shape({
        value: yup
            .string()
            .label('Country')
            .required("Please select a country"),
})

这是错误的,这会将错误对象作为country: { value: "Please select a country" },这不是我的要求。

我应该在此处进行哪些更改?

【问题讨论】:

    标签: javascript reactjs formik yup


    【解决方案1】:

    value: '' 被认为是字符串的缺失值,因此除了.required() 之外的大多数验证都会忽略它。在这种情况下,您可以:

    • 设置默认国家/地区值
    • 或删除.required() 规则。

    【讨论】:

    • 我发现答案已更新为这个问题的答案
    【解决方案2】:

    我找到了如下答案。

    country: yup
            .object()
            .test(
              'country', 
              'Please select Country', 
              val => !val.value ? false : true,
            )
    

    这将检查value 是否在country 对象中,如果为空则返回false,并且给定的错误将根据需要直接分配给country 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 2020-11-03
      • 2021-12-21
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多