Когда нам нужно проверить форму Formik (часто с помощью Yup), мы можем использовать следующий метод: validateForm.
Он возвращает обещание, поэтому мы должны проверить, разрешится оно или нет.
Однако ошибки валидации отправляются непосредственно внутрь обещания в качестве аргумента и не перехватываются. Поэтому обещание всегда разрешается в этом случае.
Чтобы передать ошибки проверки, мы должны передать их в качестве аргумента самого обещания.
formik.validateForm({...})
.then((errors) => submit(formik, values, errors))
Затем можно проверить ошибки и написать логику в методе submit.
const submit = (formik, values, errors) => {...}
Бонус: вот типы (для пользователей TS) для 3 аргументов выше:
formik: FormikContextType<FormikValues>
values: FormikValues
errors: FormikErrors<FormikValues>
Спасибо, что прочитали, и давайте общаться в Twitter!