【发布时间】:2017-07-07 18:09:40
【问题描述】:
在我的 React/JS 应用程序中。这是我拥有的 Component 类的一部分:
<p>
<input
onChange={ this.handleEmailChange } value={ this.props.email } type='email'
className={ this.state.error ? 'form-control loginCredentialError shakeElement' : 'form-control' }
name='email'
placeholder='Email' required='True'
/>
<input
onChange={ this.handlePasswordChange } value={ this.props.password } type='password'
className={ this.state.error ? 'form-control loginCredentialError shakeElement' : 'form-control' } name='password'
placeholder='Password' required='True'
/>
</p>
<p>
<Button
onClick={ (event) => this.handleLoginClick(event) }
className='btn btn-round-lg btn-round btn-primary btn-block center-block'
>Sign In</Button>
</p>
如您所见,我有handleEmailChange、handlePasswordChange 和handleLoginClick。 这三个函数与render 函数属于同一Component 类
在这个函数中,this 被评估为null,这使得this.setState 失败。
handleEmailChange(event) {
const value = event.target.value;
console.log(value);
this.setState({ email: value });
}
然而,在这个函数中this 很好并且有一个值。 setState 效果很好。谁能告诉我为什么这些看似相似的功能有区别?
handleLoginClick(event) {
event.preventDefault();
const payload = {
'email': this.state.email,
'password': this.state.password,
};
this.setState({ communicating: true, error: false, errorServer: false });
...
...
...
【问题讨论】:
-
是因为箭头函数返回handleLoginClick
标签: reactjs