Я делаю схему проверки пароля, и у меня есть следующие
const ProfileEditSchema = t =>
Yup.object().shape({
password: Yup.string()
.notRequired(t('TR_PASSWORD_REQUIRED'))
.matches(
/^(?=.*[A-Za-z])(?=.*\d)[0-9a-zA-Z!@#$%-.()_']{8,}$/,
t('TR_PASSWORD_HELPER')
),
new_password: Yup.string().when('password', {
is: password => password != undefined,
then: Yup.string()
.required(t('TR_PASSWORD_REQUIRED'))
.matches(
/^(?=.*[A-Za-z])(?=.*\d)[0-9a-zA-Z!@#$%-.()_']{8,}$/,
t('TR_PASSWORD_HELPER')
)
.test(
'password-not-equal',
'new and old password are the same',
(password, new_password) => password === new_password
)
})
});
Все работает нормально, за исключением моей тестовой функции, которая всякий раз, когда я устанавливаю новое значение пароля, продолжает выдавать сообщение об ошибке проверки = ›« новый и старый пароль одинаковы », даже если я установил разные пароли. Также был бы признателен, если бы вы могли сказать, является ли использование .test()
в этом случае лучшим подходом. Все, что я хочу, это выдать ошибку, если два входных значения равны. Спасибо!