在ES8的async / await中包装React的setState函数

时间:2017-08-27 07:03:11

标签: javascript reactjs

由于React的setState是异步的,是否建议将其调用包装在async / await函数中,以便后来严重依赖于状态变量的任何东西都会获得更新的值?

2 个答案:

答案 0 :(得分:2)

这可能是async / await的实现。例如,在您的反应组件中:

setStateAsync(state) {
  return new Promise((resolve) => {
    this.setState(state, resolve)
  });
}

async setStateAndDoSomethingRightAfter(state) {
    await this.setStateAsync({state})
    // now do something after
}

但我不确定它是否值得推荐。出于某种原因,存在生命周期方法。

我相信"反应"做事方式是将您的代码置于componentDidMount / componentWillUpdate / componentDidUpdate内的新状态。

答案 1 :(得分:2)

您可以使用setState的第二个参数,一个回调。 DOCS
this.setState({ key: val }, callBack)