Проверка асинхронного поля Formik с помощью схемы yup - PullRequest
0 голосов
/ 31 октября 2019

В моем случае у меня есть проверка формы схемы 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?

...