如何在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
相关产品推荐
相关产品推荐

