Reactjs 如何在formik中处理API验证调用

Reactjs 如何在formik中处理API验证调用,reactjs,formik,yup,Reactjs,Formik,Yup,我有一个名为email的字段名,它使用validationSchema作为验证电子邮件格式 email: yup.string().required('required').email() 并且还集成了一些API,在用户提交表单时检查重复的电子邮件(在handleSubmit中调用API以确保电子邮件的格式正确),并在服务器响应时设置字段错误,因为它已经存在。所以这里的流程是 Checking an email format (onBlur and onChange) -> user

我有一个名为email的字段名,它使用validationSchema作为验证电子邮件格式

email: yup.string().required('required').email() 
并且还集成了一些API,在用户提交表单时检查重复的电子邮件(在handleSubmit中调用API以确保电子邮件的格式正确),并在服务器响应时设置字段错误,因为它已经存在。所以这里的流程是

Checking an email format (onBlur and onChange) -> user press submit form -> call API checking  duplicate email -> if email is already exist then setFieldError as 'Email is already exist' or otherwise submit the form. 

这项工作与预期的一样,但当表单包含多个字段时,问题就会出现。当表单中发生任何更改时,所有字段都会得到验证。如果我有两个字段,电子邮件和密码。用户提交副本后,电子邮件字段正确显示“电子邮件已存在”,但当我更新密码字段中的值时。电子邮件中的错误将消失,并由validationSchema验证,即使其字段上没有发生更改。有什么建议吗

解决这个问题的一种方法不是最好的,那就是只在提交时验证表单。这意味着将
false
传递给
validateOnBlur
validateOnChange
Formik
/
组件中

还可以传递异步字段级验证级别,如中所示