反应 ES5 执行 ES6 设置状态回调的替代方法?



我试图通过将回调函数传递给setstate来强制 react 同步执行setstate

我已经对SO进行了研究,发现我们可以做类似的事情

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

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

我已经尝试过this.setstate({state:value}, function())但它没有做我想让它做的事情。

此外,有没有更理想的方法来强制 react 同步执行 setstate?

你不能

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

如果你将回调作为第二个参数传递,那么 React 将在组件的状态更新调用它。

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

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

一般来说,React 无法判断你是传递了箭头函数还是常规函数作为参数,所以行为不会因为你使用的是 ES6 还是 ES5 语法而改变。

最新更新