Почему троичный оператор не работает с государственными свойствами - PullRequest
0 голосов
/ 17 мая 2019

Я уничтожил свойства "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 ]

4 голосов
/ 17 мая 2019

Чтобы соответствовать поведению if/else, вы должны сделать:

console.log(password === retypepassword ? "form submitted" : this.state);
0 голосов
/ 17 мая 2019

Проблема в том, что в вашем блоке if / else у вас другой код, чем в вашем троичном выражении.

Посмотрите, как в вашем if / else вы ничего не возвращаете, и вы консольный.log () в обоих условиях?

Просто сделайте так, чтобы ваш троичный оператор делал то же самое:

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

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

Но для удобства чтения я не думаю, что трояны используются таким образом, даже если этотехнически работает.

0 голосов
/ 17 мая 2019

троичный оператор может использоваться только для присвоения значения переменной, другими словами, вы не можете присвоить console.log («что-то») переменной. Один из способов сделать это - присвоить строковое значение переменной и выйти из нее. так что в вашем случае вы можете сделать это так:

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