2016-10-28 2 views
2

LoginPage называет AuthForm и структура выглядитРеагировать не срабатывает функция в компоненте

function mapDispatchToProps(dispatch: Redux.Dispatch<any>) { 
    return { 
    signUpWithEmail: function(email: string, password: string) { 
     // bla bla 
    }, 
}; 
} 

handleFormSignUpWithEmail(event: React.FormEvent) { 
    event.preventDefault(); 
    console.log("handleFormSignUpWithEmail is fired"); 
    this.props.signUpWithEmail(this.props.email,this.props.password); 
} 
render() { 
     return (
      <AuthForm onSignUpWithEmail {this.handleFormSignUpWithEmail.bind(this) } /> ); 
    } 
}; 

в AuthForm

export interface AuthFormProps { 
    onSignUpWithEmail?: (event: React.FormEvent) => void; 
} 

render() { 
    return (
    <button className="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-pull-right" 
     onClick={this.onSignUpWithEmail.bind(this)}> 
     Submit 
    </button> 

Это прекрасно работает, но когда я добавляю еще одну функцию, как это, он прекращает стрельбу onSignUpWithEmail

comparePass() 
    { 
     this.props.onSignUpWithEmail.bind(this); 
    } 

    render() { 
     return (
     <button className="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-pull-right" 
        onClick={this.comparePass.bind(this)}> 
        Submit 
       </button> 

     }  

почему comparePass, не может стрелять onSignUpWithEmail? , причина, по которой я не делаю этого на странице входа, потому что позже могу использовать authfrom.

Любые предложения по исправлению этого вопроса?

+0

Попробуйте изменить 'this.props.onSignUpWithEmail.apply (это),' 'в this.props .onSignUpWithEmail.bind (this); ' –

+0

жаль, что это уже' this.props.onSignUpWithEmail.bind (это) 'Я забыл изменить его, я пытался вызвать его с помощью приложения или вызова также –

+0

Устраняется ли comparePass? попробуйте сделать console.log() из этой функции и посмотреть, будет ли ее вызов, было бы намного лучше, если бы у вас был пример настройки где-то. –

ответ

0

Предполагая, что вы собираетесь делать больше в comparePass, но хотят пройти по event попробуйте:

const boundSignup = this.props.onSignUpWithEmail.bind(this, event); 
boundSignup(); 
Смежные вопросы