即使验证失败也可以运行使表单验证成功的代码

时间:2020-04-07 18:44:03

标签: reactjs formik

我正在将表单数据发布到Mongo。如果没有错误,则应重置表格并显示成功消息。但是现在发生的是,当出现验证错误时,将重置表格并显示成功消息。

onSubmit={async (values, { setSubmitting, resetForm }) => {
  try {
     const response = await fetch(//code here);
     const responseData = await response.json();

     if (!response.okay) {
          setErrors(responseData);
     }

     setSuccess(true);
     resetForm();

  } catch(err) {
     console.log(err);
  {
}}

2 个答案:

答案 0 :(得分:1)

您的问题是一个简单的疏忽。即使表单失败,您也正在运行setSuccess。只需将这两个函数放在else中即可。

此外,获取API中不存在response.okay,因此您应该使用response.ok来获得预期的结果。

onSubmit={async (values, { setSubmitting, resetForm }) => {
  try {
     const response = await fetch(//code here);
     const responseData = await response.json();

     if (!response.ok) {
          setErrors(responseData);
     } else {
         setSuccess(true);
         resetForm();
     }
  } catch(err) {
     console.log(err);
  }
}}

答案 1 :(得分:0)

应该是成功条件的另一个。

    if (!response.okay) {
        setErrors(responseData);
    }
    else{
        setSuccess(true);
        resetForm();
    }