如何使用Yup验证Formik表单中newPassword与confirmNewPassword字段相等?
用Yup验证密码确认字段匹配的方法
你可以直接使用Yup内置的oneOf方法结合ref来实现两个密码字段的匹配验证,不需要额外依赖,同时也能和yup-password的规则兼容。
基础实现示例
import * as Yup from 'yup'; import YupPassword from 'yup-password'; // 扩展Yup,启用yup-password的密码增强验证 YupPassword(Yup); const validationSchema = Yup.object({ newPassword: Yup.string() .password() // 这里可以叠加yup-password的规则,比如.min(8)、.minLowercase(1)等 .required('新密码不能为空'), confirmNewPassword: Yup.string() .oneOf([Yup.ref('newPassword')], '两次输入的密码必须一致') .required('请确认新密码') });
自定义验证逻辑(可选)
如果需要更灵活的验证逻辑,也可以用test方法手动判断:
confirmNewPassword: Yup.string() .required('请确认新密码') .test('password-match', '两次输入的密码不一致', function(value) { // 通过this.parent获取表单其他字段的值 return this.parent.newPassword === value; })
内容的提问来源于stack exchange,提问作者Dimitri Kopriwa
相关产品推荐
相关产品推荐

