如何在Formik中处理API验证调用

时间:2020-05-02 06:47:55

标签: reactjs formik yup

我有一个名为email的字段名称,该字段使用validateSchema作为

来验证电子邮件格式。
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. 

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

1 个答案:

答案 0 :(得分:0)

解决此问题的最好方法之一是使表单仅在提交时验证。这意味着将false / validateOnBlur组件中的validateOnChange传递到FormikwithFormik

您还可以传递异步字段级别的验证级别,如docs所示。