RN系列之虚拟DOM

2023-03-20  本文已影响0人  尹学姐

虚拟DOM是React的一种用于提高渲染效率机制,今天我们来看看虚拟DOM的主要原理。

为什么要使用虚拟DOM

传统JQuery的问题

  1. 如果直接操作真实的DOM,每次修改都会造成DOM的重绘和重排。高频操作效率很低。
  2. JS直接操作DOM,效率不高。
  3. model和view耦合。

React的解决方案

  1. 响应式,数据变化UI自动变化
  2. 使用虚拟DOM,合并频繁操作

React的虚拟DOM

React框架核心:React virtual DOM -> 浏览器真实DOM

使用虚拟DOM树的优点如下:

React的setState方法:

PureComponent:

React数据视图更新原理

  1. state数据
  2. JSX模板(render中定义)
  3. 数据 + 模板生成虚拟DOM(虚拟DOM是一个JS对象,用来描述真实DOM)
    ['div', {id:'abc'}, ['span',{},'hello world']]
  4. 用虚拟DOM的结构生成真实的DOM,来显示
    <div id='abc><span>hello world</span></div>
  5. state发生变化
  6. 数据 + 模板生成新的虚拟DOM
    ['div', {id:'abc'}, ['span',{},'bye bye']]
  7. 比较原始虚拟DOM与新的虚拟DOM的区别,找到区别是span中的内容,diff算法
  8. 直接操作DOM,改变span中的内容

优点:

  1. 性能提升了,减少了真实DOM的创建和对比,取而代之的是虚拟DOM
  2. 使得跨端应用得以实现,React Native,将虚拟DOM对应到native组件中

diff算法的核心

  1. 同层比对。确实会造成DOM渲染的浪费,但是会提高比对的效率。
    具体怎么提高?提高了多少?时间复杂度多少?
  2. React引入key值,实现快速比对:
    不要用index作为key值。如果列表变化,index会变化,就无法达到key值快速比对的效果了。
    提高列表渲染效果,需要使用一个稳定的key值。

响应式设计思想和事件绑定

常用优化方法

React最耗性能的地方:update和diff,优化的重点就是减少这两个方法的调用

参考文章

上一篇下一篇

猜你喜欢

热点阅读