我试图通过将回调函数传递给setstate
来强制做出同步执行setstate
的反应
我完成了对SO的研究,发现我们可以做类似
的事情this.setstate({state:value}, () => {function()})
但是,由于ES5没有箭头功能,我应该如何在setstate中传递回调?
我尝试了this.setstate({state:value}, function())
,但它并没有按照我的意愿去做。
此外,还有更强大的理由强制反应同步执行setstate吗?
答案 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语法,行为不会发生变化。