我刚刚发现在 react this.setState()
任何组件中的函数都是异步的,或者在调用它的函数完成后被调用。
现在我搜索并找到了这个博客(setState() State Mutation Operation May Be Synchronous In ReactJS)
在这里他发现 setState
是异步的(当堆栈为空时调用)还是同步的(一旦被调用就调用)取决于状态变化是如何触发的。
现在这两件事很难消化
setState
函数在函数 updateState
内被调用,但是触发 updateState
函数的原因并不知道。 setState
异步,因为 JS 是单线程语言,而且这个 setState 不是 WebAPI 或服务器调用,所以只能在 JS 的线程上完成。他们这样做是为了使重新渲染不会停止所有事件监听器和其他东西,还是存在其他一些设计问题。 最佳答案
您可以在状态值更新后调用函数:
this.setState({foo: 'bar'}, () => {
// Do something here.
});
此外,如果您有很多状态要一次更新,请将它们全部分组在同一个
setState
中:代替:
this.setState({foo: "one"}, () => {
this.setState({bar: "two"});
});
只需这样做:
this.setState({
foo: "one",
bar: "two"
});
关于javascript - 为什么reactjs Async 中的setState 是Async 而不是Sync?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36085726/