我刚刚发现,在React this.setState()
函数中,任何组件中的函数都是异步的,或者在完成其调用的函数后被调用。
现在我搜索并找到了这个博客(setState()状态更改操作在ReactJS中可能是同步的)
在这里,他发现setState
是async(在堆栈为空时调用)或sync(在调用后立即调用),具体取决于触发状态更改的方式。
现在这两件事很难消化
- 在博客中,该
setState
函数在一个函数内部被调用updateState
,但是触发该updateState
函数的并不是被调用函数知道的东西。 - 他们为什么要使
setState
异步,因为JS是单线程语言,而此setState不是WebAPI或服务器调用,因此只能在JS的线程上完成。他们这样做是为了使Re-Rendering不会停止所有事件侦听器和其他操作,或者存在其他设计问题。
好文章在这里 https://github.com/vasanthk/react-bits/blob/master/patterns/27.passing-function-to-setState.md
或通过回调
this.setState ({.....},callback)
https://medium.com/javascript-scene/setstate-gate-abc10a9b2d82 https://medium.freecodecamp.org/functional-setstate-is-the-future-of-react-374f30401b6b