为什么三元运算符不处理状态属性

时间:2019-05-16 21:54:16

标签: javascript reactjs state ternary-operator

我已经从状态中破坏了“ password”和“ retypepassword”属性,现在尝试在它们上施加条件。当我使用if和else语句时,它工作得很好,但是当我使用三元运算符时,它不工作。我已经检查了三元运算符的格式,它与我编写的相同,但仍然无法正常工作。

请让我知道我在做什么错!

SubmitHandler = e => {
    e.preventDefault();
    const { password, retypepassword } = this.state;
    // if (password === retypepassword) {
    //   console.log("password not match");
    // } else console.log(this.state);
    password === retypepassword
      ? return(console.log("form submitted"))
      : "password does not match";
  };

3 个答案:

答案 0 :(得分:4)

要匹配checks的行为,请执行以下操作:

if/else

答案 1 :(得分:0)

三元运算符只能通过用来为变量赋值, 换句话说,您无法将console.log(“ something”)分配给变量。 实现此目的的一种方法是将字符串值分配给变量,然后将其注销。 因此,您可以按照以下方式进行操作:

return password === retypepassword ? "form submitted" : "password does not match"; // and then log it out.

答案 2 :(得分:0)

问题在于if / else块中的代码与三元语句中的代码不同。

看看在if / else中您什么都不返回,而在两种情况下都可以console.log()进行操作?

只需让您的三元运算符做同样的事情即可

SubmitHandler = e => {
    e.preventDefault();
    const { password, retypepassword } = this.state;

    password === retypepassword 
    ? 
    console.log("form submitted")
    : 
    console.log("password does not match")
  };

但是出于可读性考虑,即使技术上可行,我也不认为三元是这样使用的。