1、setState为何需要异步?
- 可能会一次执行多次setState
- 无法规定用户如何让使用setState(开发人员可能多次修改)
- 为了提高效率、性能,防止多次渲染 没必要每次setState都重新渲染
- 即便重新渲染,用户也看不到中间的效果
- 多次修改的话 都汇总 只要看到最后的结果即可
2、 vue 修改属性也是异步的
- 效果、原因和 setState 一样
3、setState的过程 (patch)
- 每个组件实例,都有 renderComponent 方法(定义组件时写的 extends component, renderComponent在React公共的component里面 并不是我们写的)
- 执行 renderComponent 会重新执行实例的 render ( 为了得到render返回的newVnode)
- render 函数返回 newVnode ,然后拿到 preVnode
- 执行 patch(preVnode, newVnode)