2015-09-02 2 views
0

Я пытаюсь создать проверку подтверждения пароля в reactJS. В настоящее время я тестирую обратные вызовы в компоненте. Когда я тестирую это представление, я не вижу, чтобы мой onChange срабатывал при любых обратных вызовах. Я довольно новичок в reactjs, поэтому я не уверен, почему ничего не происходит.responsejs onChange callbacks

import React from 'react'; 

class SignUp extends React.Component { 

    confirmPassword(event) { 
     console.log("confirmPassword"); 
     console.log(event); 
    } 

    setInitialPassword(event) { 
     console.log("setInitialPassword"); 
     console.log(event); 
    } 

    render() { 
     return (
      <div> 
       <form method="post" action="/signup"> 
        <ul> 
         <li><input id="firstName" name="first_name" placeholder="First name" type="text" required="required" /></li> 
         <li><input id="lastName" name="last_name" placeholder="Last name" type="text" required="required" /></li> 
         <li><input id="email" name="email" placeholder="Email" type="email" required="required" /></li> 
         <li><input id="password" name="password" placeholder="Password" type="password" required="required" onChange={ this.setInitialPassword }/></li> 
         <li><input id="confirmPassword" name="confirm_password" placeholder="Confirm Password" type="password" required="required" onChange={ this.confirmPassword } /></li> 
         <span id="confirmMessage" class="confirm-message"></span> 
         <input type="submit" value="Sign up" /> 
         <input type="reset" value="Cancel" /> 
        </ul> 
       </form> 
      </div> 
     ); 
    } 
}; 

export default SignUp; 
+0

Есть ли у вас какие-либо ошибки? Кажется, что он корректно работает в jsfiddle: https://jsfiddle.net/g5gtfbcv/1/ – Tom

+0

Его работы с этой скрипкой: https://jsfiddle.net/69z2wepo/15118/. Кстати, вы должны написать 'className' вместо' class'. – Pcriulan

+0

Если вы используете 'React.createClass' вместо синтаксиса класса ES6, вы получите автообщение, и это будет Just Work ™. – Mathletics

ответ

1

Вы должны связать this при установке обработчиков.

<li><input id="password" name="password" placeholder="Password" type="password" required="required" onChange={ this.setInitialPassword.bind(this) }/></li> 
<li><input id="confirmPassword" name="confirm_password" placeholder="Confirm Password" type="password" required="required" onChange={ this.confirmPassword.bind(this) } /></li> 

или используя ES6 большие стрелки функции:

<li><input id="password" name="password" placeholder="Password" type="password" required="required" onChange={ e => this.setInitialPassword(e) }/></li> 
<li><input id="confirmPassword" name="confirm_password" placeholder="Confirm Password" type="password" required="required" onChange={ e => this.confirmPassword(e) } /></li>