反应ES5做ES6的setstate回调的另一种方式?

时间:2017-11-14 21:45:13

标签: reactjs

我试图通过将回调函数传递给setstate来强制做出同步执行setstate的反应

我完成了对SO的研究,发现我们可以做类似

的事情
this.setstate({state:value}, () => {function()})

但是,由于ES5没有箭头功能,我应该如何在setstate中传递回调?

我尝试了this.setstate({state:value}, function()),但它并没有按照我的意愿去做。

此外,还有更强大的理由强制反应同步执行setstate吗?

1 个答案:

答案 0 :(得分:2)

您无法强制setState同步,因为React有时会将多个更新一起批处理,以防止同时发生太多更新。

如果您将回调作为第二个参数传递,那么在组件的状态更新后,React会将其称为

this.setState({ key: value }, function() {
  // this.state is updated
});

// this.state might not be updated

另一个选择是使用componentDidUpdate等待任何setState更改,如果您总是希望在任何状态更改后进行更新,这是一个更好的解决方案。< / p>

通常情况下,React无法判断您是否将箭头函数或常规函数作为参数传递,因此根据您是否使用ES6或ES5语法,行为不会发生变化。