我目前正在尝试使用 Meteor 和 React 来做一个应用程序,但我一直在做登录表单。确实,我想用来ReactComponent.state保存表单的错误并显示它们
Meteor.loginWithPassword(email, password, err => {
if (err) {
this.setState({error: true, errorMessage: "User not found or password incorrect!"});
return;
} else {
}
});
不幸的是,这似乎不起作用(它会引发警告):
Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. Please check the code for the Signin component.
您可能不需要它,但这是render我ReactComponent.state用来显示错误的函数
render() {
return <form onSubmit={this.handleSubmit}>
{this.state.error
? <p style={{
color: 'red'
}}>{this.state.errorMessage}</p>
: ""}
<label>Email</label>
<br/>
<input type="email" value={this.state.email} onChange={this.handleChange('email')} required/>
<br/>
<label>Password</label>
<br/>
<input type="password" value={this.state.password} onChange={this.handleChange('password')} required/>
<br/><br/>
<button type="submit">Sign in</button>
</form>
}
Meteor.loginWithPassword是在函数内部handleSubmit。我想这ReactComponent.state不能在回调中更新,但我不知道为什么以及如何使它工作。
当然,我没有忘记initialState组件的:
getInitialState: function() {
return {email: '', password: '', error: false, errorMessage: ''};
},
谢谢