Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React.js Async wait setState(),这是正确的方法吗?_Javascript_Reactjs_Async Await - Fatal编程技术网

Javascript React.js Async wait setState(),这是正确的方法吗?

Javascript React.js Async wait setState(),这是正确的方法吗?,javascript,reactjs,async-await,Javascript,Reactjs,Async Await,如果没有async和/或prevState,我无法在设置页面的新状态后立即console.log所需的页面状态 由于我一直在做一些后端工作,我开始学习异步是如何工作的。 所以我想也许我可以使用wait before this.setState为if语句获取正确的状态,该语句必须在设置状态后立即出现 changePage=async(newPage)=>{ if(this.state.page!==newPage){ 等待这个.setState({page:newPage}); console.l

如果没有async和/或prevState,我无法在设置页面的新状态后立即console.log所需的页面状态

由于我一直在做一些后端工作,我开始学习异步是如何工作的。 所以我想也许我可以使用wait before this.setState为if语句获取正确的状态,该语句必须在设置状态后立即出现

changePage=async(newPage)=>{
if(this.state.page!==newPage){
等待这个.setState({page:newPage});
console.log(this.state.page);
如果(this.state.page===''){
}else if(this.state.page==''){
}
}
}

但我以前从未真正见过这种情况,也从未以这种方式使用过它,所以我想知道有没有更好的方法来做到这一点?

在类组件中,
setState
接受在状态更新后运行的回调。因此,您实际上不需要使用
async
wait
,只需执行以下操作:

this.setState({page:newPage},()=>{
console.log(this.state.page);
如果(this.state.page===''){
}else if(this.state.page==''){
}
});
setState
不返回承诺。所以,只要它起作用,它就是一个比赛条件。