【问题标题】:Yup validation -- making sure an array contains at least one item是的验证——确保一个数组至少包含一项
【发布时间】:2021-05-27 23:23:19
【问题描述】:

我有一个这样的数组

{
    array: ["1", "4"]
}

但我想向它添加一个 yup 验证——如果数组为空——那么数组中至少有一项

我已经尝试过类似的方法 - 但它不起作用

myArray: yup.array().min(1). required("at least one item needs to be here")

空数组总是真实的吗? Yup: Validating Array of Strings That Can Be Empty

但是这个沙盒似乎可以工作? https://codesandbox.io/s/serene-khorana-3pjmq?file=/src/index.js


https://codesandbox.io/s/lively-rgb-b2sct

这是 formik 表单框架的工作 - 带有复选框 - 显示 - 但是当未选择复选框时,也就是值是一个空数组 - 错误应该显示 - 但它没有?

【问题讨论】:

    标签: javascript yup


    【解决方案1】:

    你所做的已经是正确和预期的。我不确定你的困惑是什么。

    如果代码是:

    import "./styles.css";
    //import { object, array } from "yup";
    import * as yup from "yup";
    
    const mySchema = yup.object({
      myArray: yup.array().min(1, "at least 1").required("required")
    });
    
    console.log("[]", mySchema.isValidSync({ myArray: [] }));
    
    console.log(
      '["John"]',
      mySchema.isValidSync({
        myArray: ["John"]
      })
    );
    
    console.log(
      '["John", "Doe"]',
      mySchema.isValidSync({
        myArray: ["John", "Doe"]
      })
    );
    
    

    返回:

    
    [] false
    ["John"] true
    ["John", "Doe"] true
    

    如果我将行更改为 myArray: yup.array().min(2, "at least 2").required("required")

    然后它返回:

    [] false
    ["John"] false
    ["John", "Doe"] true
    

    【讨论】:

    • 它不工作 - 在我的代码库中 - 我正在构建一个表单框架 - 使用 formik - 但这似乎不适用于空数组值 - 它就像它没有显示一个错误
    • codesandbox.io/s/lively-rgb-b2sct - 所以当复选框没有至少选中一个时 - 应该显示错误 - 但它没有
    • codesandbox.io/s/crazy-stonebraker-q5zd8 -- 这是我要解决的错误
    • 您的 <FieldHandler/> 创建复选框架构的方式有问题。请参阅我的console.log 中的here,在formik 中的validationSchema 和formik 中生成的值之间。尝试查看控制台然后更改复选框的值,您将看到您将整个复选框的值保存在 checkbox_option1 键中。
    • 然后在您的第二个沙箱之后,如果我按照here 所示进行正确验证。如果至少有 1 个复选框没有被勾选,Formik 就不会提交(请参阅 console.log 是否提交或不提交)。因此,是的,按预期工作。
    猜你喜欢
    • 2021-08-24
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    相关资源
    最近更新 更多