React.js异步等待setState(),这是正确的方法吗?

时间:2020-02-10 19:30:08

标签: javascript reactjs async-await

在没有异步和/或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 === ''){

    }
  }
}

但是我从来没有真正看过这个东西,也从未以这种方式使用过它,所以我想知道有没有更好的方法?

1 个答案:

答案 0 :(得分:0)

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

this.setState({ page: newPage}, () => {
  console.log(this.state.page);
  if(this.state.page === ''){

  }else if(this.state.page === ''){

  }
});
相关问题