教程 yup tutorial

数组验证

Yup 可以对数组类型进行验证,支持数组长度、元素类型及自定义规则。

导入方式

js
import { array, object, string, number } from 'yup';

`

基本数组验证

js
const schema = array().of(string().required()).min(1, "至少有一个元素");
  • array():定义数组类型
  • of(schema):数组中的每个元素必须符合指定 Schema
  • min(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) 定义数组元素类型
  • 可以限制长度、使用嵌套对象、添加自定义规则
  • 常用于表单中多选、列表、动态表格等场景