2017-05-08 68 views
1

在我的基本React中,我有以下onFormSubmit函数,它检查电子邮件和密码的目标输入。验证函数返回undefined错误检查而不是真

如果表单没有提交任何数据,那么电子邮件和密码都是""

但是,对于emailErrpasswordErr,验证函数的返回值都是undefined。

验证函数内部的日志将不会注销任何内容,但如果我设置了中断点,我将看到空的""。这些空字符串应该在return语句中验证为true,但它们不会。

onFormSubmit(e) { 
    e.preventDefault(); 
    const email = e.target.email.value; 
    const password = e.target.password.value; 

    const validate = (email, password) => { 
     console.log('validate'); 
     console.log(' email', email); 
     console.log(' password', password); 
     // true means invalid 
     return { 
      email: email.length === 0, 
      password: password.length === 0, 
     }; 
    } 

    const { emailErr, passwordErr } = validate(email, password); 

    console.log('emailErr', emailErr); 
    console.log('passwordErr', passwordErr); 

    if (emailErr) { 
     console.log('No email!'); 
    } 
    else if (passwordErr) { 
     console.log('No password'); 
    } 

}; 

回答

1

当你正在返回的键值对,您需要使用相同的密钥,而解构

// suppose you are returning this 
 
const a = { 
 
    emailErr: true, 
 
    passwordErr: true 
 
}; 
 
    
 
console.log('correct implementation'); 
 
const { emailErr, passwordErr } = a; 
 
console.log(emailErr) 
 
console.log(passwordErr) 
 

 
console.log('wrong implementation'); 
 
const { email, password } = a; 
 
console.log(email) 
 
console.log(password)