主题
数组验证
Yup 可以对数组类型进行验证,支持数组长度、元素类型及自定义规则。
导入方式
js
import { array, object, string, number } from 'yup';
基本数组验证
js
const schema = array().of(string().required()).min(1, "至少有一个元素");
array()
:定义数组类型of(schema)
:数组中的每个元素必须符合指定 Schemamin(n, message)
/max(n, message)
:限制数组长度
数组中对象验证
js
const schema = array().of(
object({
name: string().required(),
age: number().positive().integer()
})
);
- 数组元素可以是对象
- 对象内部可以使用任意 Yup 类型验证
自定义数组验证
js
const schema = array()
.of(number())
.test('sum-check', '数组总和必须大于10', (arr) => {
return arr.reduce((sum, val) => sum + val, 0) > 10;
});
test(name, message, fn)
:自定义验证逻辑arr
是当前数组值
小结
array().of(schema)
定义数组元素类型- 可以限制长度、使用嵌套对象、添加自定义规则
- 常用于表单中多选、列表、动态表格等场景