Javascript 此.setState忽略
我的项目的一个功能有问题。我有这个密码Javascript 此.setState忽略,javascript,reactjs,Javascript,Reactjs,我的项目的一个功能有问题。我有这个密码 async handleSubmit(e) { e.preventDefault(); await this.setState({ errors: { name: !this.state.values.name ? 'Enter name' : null, tel: !this.state.values.tel ? 'Enter phon
async handleSubmit(e) {
e.preventDefault();
await this.setState({
errors: {
name: !this.state.values.name ? 'Enter name' : null,
tel: !this.state.values.tel ? 'Enter phone number' : null
}
});
if (!this.state.errors.name && !this.state.errors.tel) {
this.props.createUser([this.state.values.name, this.state.values.tel]);
}
}
这个代码在第一次点击按钮时忽略设置状态。如何修复它?这种行为的原因是
setState
没有同步工作<代码>设置状态操作是异步的,并且为提高性能而成批执行。这在setState
的文档中有说明。您不能使用wait
,因为setState
不会返回承诺
setState
接受回调作为第二个参数,该参数在执行状态更改后立即运行
handleSubmit(e){
e、 预防默认值();
这是我的国家({
错误:{
名称:!this.state.values.name?“输入名称”:null,
电话:!this.state.values.tel?“输入电话号码”:null
}
}, () => {
if(!this.state.errors.name&!this.state.errors.tel){
this.props.createUser([this.state.values.name,this.state.values.tel]);
});
}
}
想知道你为什么在这里等待你的设置状态?如果您正在等待状态更新,那么使用第二个参数setState或函数状态更新可能是更好的选择?