https://juejin.im/post/5bf1444cf265da614a3a1660
api
setState(updater: object | function, callback)
setState 的‘异步’和同步
在合成事件,生命周期钩子中是“异步”的,在原生事件,setTimeout 中是同步的
这个所谓的‘异步’不是真正的异步语法而是:
- 将多个 setState 中的合并 (多个参数对象进行浅合并)
- 放到代码的最后去触发 render
setTimeout内的 setState 之所以是同步, 是因为 evenloop 机制导致的
react 为什么会出现这种“异步”现象?
react特有的处理机制,避免多次触发不必要的 render, 起到一定的性能优化作用
那么如何拿到更新后的state
- setState 的第二个参数 callback
- 在 componentDidUpdate 中去取 state
如何基于之前的 state 设置现在的 state
将 setState 的第一个参数传入函数,函数中会拿到 最新的 state 和 props

