在没有异步和/或prevState的情况下,我无法在设置新的页面状态后立即console.log记录页面所需的状态。
由于我一直在做一些后端工作,所以我开始学习异步的工作方式。 因此,我想也许可以在this.setState之前使用await来获取正确的状态,以使if语句必须在设置状态后立即出现。
changePage = async (newPage) => {
if(this.state.page !== newPage){
await this.setState({ page: newPage});
console.log(this.state.page);
if(this.state.page === ''){
}else if(this.state.page === ''){
}
}
}
但是我从来没有真正看过这个东西,也从未以这种方式使用过它,所以我想知道有没有更好的方法?
答案 0 :(得分:0)
在类组件中,setState
进行状态更新后运行的回调。因此,您实际上不需要使用async
或await
,而只需执行以下操作:
this.setState({ page: newPage}, () => {
console.log(this.state.page);
if(this.state.page === ''){
}else if(this.state.page === ''){
}
});