В моем случае у меня есть проверка формы схемы yup. Например:
const form = yup.object().shape({
firstName: yup.string().nullable().required(),
lastName: yup.string().nullable().required(),
country: yup.string().nullable().required()
.test('validator', 'country is incorrect', value => {
return new Promise((resolve, reject) => {
api.post('url', value)
.then(() =>
resolve(false))
.catch(() =>
resolve(true)
})
}
});
Также я хочу проверить страна поле асинхронно .
Поток должен быть следующим:
- Должна быть запущена синхронная проверка
- ЕСЛИ нет СИНХРОННОЙ ошибки проверки
- ТО запускается АСИНХРОННАЯ проверка
- ЕСЛИ никакая АСИНХРОННАЯ форма проверки не должна быть действительной
Проблемы, с которыми я столкнулся:
Я пытался использовать .test () из yup, но порядок валидаторов был неправильным.
Например, в этом случае я хочучтобы выполнить требуемый валидатор и только если он прошел успешно без ошибок, запустите .test () (асинхронная валидация).
Как добиться такого поведения с помощью Formik и Yup?