Вы можете использовать .test
Как вы можете видеть на примере документации
let asyncJimmySchema = string().test(
'is-jimmy',
'${path} is not Jimmy',
async (value) => (await fetch('/is-jimmy/' + value)).responseText === 'true',
});
Третий параметр может быть асинхронной функцией, и там вы сделаете вызов своему бэкэнду.
Edit:
Если вы хотите проверить только onBlur
, вы можете изменить Formik Prop validateOnBlur
и validateOnChange
.
Значением по умолчанию для обоих является true
, но если вы установите для validateOnChange
значение false, будут выполняться только проверки onBlur
. Обратите внимание, что это произойдет со всеми полями .
Если вам нужно только, чтобы это произошло только с одним полем, вам нужно будет использовать validate
prop поля и передать функцию, которая получает touched
поля, чтобы проверить его перед вызовом асинхронного вызова. функция.