教程 yup tutorial

异步验证

Yup 支持异步验证,可以在校验过程中调用异步函数,例如检查用户名是否已存在。

导入方式

js
import { string } from 'yup';

`

异步验证示例

js
const schema = string().required().test(
  'check-username',
  '用户名已存在',
  async (value) => {
    const exists = await fakeApiCheckUsername(value);
    return !exists;
  }
);

// 模拟异步 API
async function fakeApiCheckUsername(username) {
  const existingUsers = ['Alice', 'Bob'];
  return existingUsers.includes(username);
}
  • test(name, message, fn):自定义验证函数
  • 函数可以返回 Promise
  • Yup 会等待 Promise 完成,然后判断验证结果

使用 validate 方法

js
schema.validate('Alice')
  .then(() => console.log('验证通过'))
  .catch(err => console.log(err.errors));
  • validate 默认返回 Promise
  • 异步验证和同步验证逻辑一致,只是异步需使用 then/catch 或 async/await

小结

  • 异步验证适合检查数据库、接口或远程资源
  • 使用 test + 异步函数即可实现
  • Yup 会正确处理 Promise,保证验证结果可靠