You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Yup中使用.when方法获取同一字段的值?

Yup表单验证中使用.when获取当前字段值的方法

在Yup里用.when针对当前字段做条件验证时,不能传空数组[],否则is函数拿不到当前字段的值。正确的做法是把当前字段名作为.when的第一个参数传入:

示例代码

email: yup
  .string()
  .when('email', {
    is: (val) => {
      console.log('当前email值:', val);
      // 这里写你的条件逻辑,比如判断邮箱格式是否合规
      return val?.includes('@');
    },
    then: (schema) => schema.required('请输入有效的邮箱地址'),
    otherwise: (schema) => schema.nullable(),
  })

关键说明

  • 当.when的第一个参数是当前字段名(比如'email')时,Yup会自动把该字段的当前值传递给is函数的参数。
  • 如果需要同时监听多个字段(包括当前字段),可以把字段名放进数组里,比如.when(['email', 'username'], (emailVal, usernameVal) => { ... }),参数顺序和数组里的字段名对应。

你之前的代码里传了空数组[],所以is函数里的val是undefined,这就是拿不到值的原因。

内容的提问来源于stack exchange,提问作者me-me

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:10:25