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

问题描述 投票:1回答:1

我有一个名为email的字段,使用validationSchema来验证email的格式。

email: yup.string().required('required').email() 

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

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,甚至改变不发生在其字段。有什么建议吗?

reactjs formik yup
1个回答
0
投票

解决这个问题的一个方法不是最好的,是让表单只在提交时验证。这意味着通过 falsevalidateOnBlurvalidateOnChange 在你 Formik withFormik 组件。

你也可以通过一个异步字段级别的验证级别,正如你在 文件.

© www.soinside.com 2019 - 2024. All rights reserved.