reactjs - 是的(使用 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 确实是一个数组,带有值(如果选择)
我究竟做错了什么?
谢谢
解决方案
您可以使用.min()
:
validationSchema={Yup.object({
permissions: Yup.array().min(1)
})}
推荐阅读
- c++ - FindPackageHandleStandardArgs.cmake 处的 CMake 错误:137(消息):找不到 Boost(缺少:正则表达式)(找到合适的版本“1.72.0”,
- python - 将主机自定义为“0.0.0.0”时,Hello World Flask 应用程序停止工作
- java - 交换变量的用户整数输入,使其递增和递减
- mysql - Laravel 5.8 中的日期比较
- perforce - p4 sync -p 在 Perforce 中的某些条件下不起作用
- java - 如何将文本大小添加到 ListView?
- php - Laravel Vue 脚手架、Auth 和 Nova 安装顺序?
- javascript - 函数没有返回“中国银联”,不知道为什么
- typescript - JSX 元素类型“HTMLImageElement”不是 JSX 元素的构造函数
- c++ - 将 N-arg 函数包装到另一个函数中