简体   繁体   English

每个 IF 语句都没有在我的 React 代码中执行

[英]Every IF statement is not executing in my React code

I am writing a form validation script in React but inside a function I have put multiple if statement.我正在 React 中编写表单验证脚本,但在 function 中我放置了多个 if 语句。 All the if/else statement supposed to be executed but only the final if statement is executing.所有应该执行的 if/else 语句,但只有最后的 if 语句正在执行。 What am I doing wrong?我究竟做错了什么? please help.请帮忙。 I provided the code below.我提供了下面的代码。

const onSubmitHandle = () => {

    if (name.length===0) {
        setErr ({ ...err,
            nameText:'Please enter name'
        })
    } else {
        setErr ({ ...err,
            nameText:''
        })
    };

    if (number.length<=5) {
        setErr ({ ...err,
            numberText:'Please enter a valid number'
        })
    } else {
        setErr ({ ...err,
            numberText:''
        })
    };

    if (email.length===0) {
        setErr ({ ...err,
            emailText:'Please enter email'
        })
    } else {
        setErr ({ ...err,
            emailText:''
        })
    };

    if(err.emailText.length===0 && err.nameText.length===0 && err.serviceText.length===0 && err.budgetText.length===0 && err.numberText.length===0) {
        alert('Your request is succesfully submited. We will reach you soon')
        setName('');
        setService('');
        setBudget('');
        setNumber('');
        setEmail('');
    };
}

Please help请帮忙

So it seems you are spreading the err variable wrong, i think what you want is:因此,您似乎错误地传播了 err 变量,我认为您想要的是:

setErr ({ 
   err:{
     ...err,
     emailText:'yadayadayada'
   }
})

by doing this you create a new var err with the old properties and still add a new one that you want (read up on spread operator) and you were right in this example it is not needed the return since you want to run all verifications通过这样做,您可以使用旧属性创建一个新的 var err,并且仍然添加一个您想要的新属性(阅读扩展运算符)并且您在这个示例中是对的,因为您想要运行所有验证,所以不需要返回

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM