调用setState后发生了什么?

简介: 调用setState后发生了什么?

调用setState后发生了什么?

  1. 代码中调用 setState 函数之后,React 会将传入的参数对象与组件当前的状态合并,然后触发所谓的调和过程(Reconciliation)。
  2. 经过调和过程,React 会以相对高效的方式根据新的状态构建 React 元素树并且着手重新渲染整个 UI 界面;
  3. React 得到元素树之后,React 会自动计算出新的树与老树的节点差异,然后根据差异对界面进行最小化重渲染;
  1. 在差异计算算法中,React 能够相对精确地知道哪些位置发生了改变以及应该如何改变,这就保证了按需更新,而不是全部重新渲染。

setState是异步还是同步:

详情链接

合成事件中是异步

钩子函数中的是异步

原生事件中是同步

setTimeout中是同步

相关文章
|
1月前
|
前端开发
为什么调用setState而不是直接改变state
为什么调用setState而不是直接改变state
23 0
|
1月前
setState 和 replaceState 的区别
setState 和 replaceState 的区别
20 2
|
1月前
|
前端开发
setState和repalceState的区别
setState和repalceState的区别
22 0
|
10月前
|
JavaScript
state 和 props 触发更新的生命周期分别有什么区别?
state 和 props 触发更新的生命周期分别有什么区别?
|
1月前
|
前端开发 JavaScript
设置状态:setState
设置状态:setState
|
7月前
|
JavaScript 前端开发
setState总结
setState总结
32 1
|
6月前
|
前端开发
setState异步问题
setState异步问题
42 0
|
8月前
|
前端开发 API
19 # promisify:将回调方法 promise 化
19 # promisify:将回调方法 promise 化
21 0
|
10月前
|
前端开发
react中使用shouldComponentUpdate生命周期函数调用setState引起的无限循环的错误
react中使用shouldComponentUpdate生命周期函数调用setState引起的无限循环的错误
92 0
|
11月前
|
前端开发
react为什么调用setState而不是直接改变state
react为什么调用setState而不是直接改变state
67 0