首页 > 解决方案 > 是的(使用 formik 和 react) - 无法验证数组长度

问题描述

对Yup来说有点新,我不知道如何验证数组不为空。

我正在使用 react + formik + 是的 + material-ui

这是我创建的一个示例:

https://codesandbox.io/s/new-fire-29onf?file=/src/App.js

我尝试在 validationSchema 中使用所需的方法:

validationSchema={Yup.object({ permissions : Yup.array().required('permission cant be empty') })}

我尝试使用这样的测试方法添加我的功能:

validationSchema={Yup.object({ permission: Yup.array().test ('notEmptyArr', 'array is empty', (value) =>{ console.log(value); return value.length > 0; }) })}

我也尝试像这样向数组添加方法:

Yup.addMethod(Yup.array, "notEmpty", function(message) { return this.test("notEmpty", message, function(arr) { return Boolean( arr.length > 0 ); }); });

但这些都不适合我:(

如果我删除验证,我看到 value.permission 确实是一个数组,带有值(如果选择)

我究竟做错了什么?

谢谢

标签: reactjsformikyup

解决方案


您可以使用.min()

validationSchema={Yup.object({
    permissions: Yup.array().min(1)
})}

推荐阅读