React提高04 对虚拟DOM和加载过程的理解

本文详细介绍了React虚拟DOM的工作原理,包括其作为JavaScript对象表示DOM结构的优势,以及为何虚拟DOM比原生DOM性能更高。文章还探讨了React的diff算法,解释了如何通过比较新旧虚拟DOM树找到最小更新策略。同时,文章指出了在不同生命周期方法中使用setState的注意事项,以避免不必要的渲染和性能问题。
摘要由CSDN通过智能技术生成

已同步到个人博客,欢迎访问
image

React虚拟DOM的理解

(1)用JavaScript对象结构表示DOM树的结构;然后用这个树构建一个真正的 DOM 树,插到文档当中

(2)当状态变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较,记录两棵树差异

(3)把2所记录的差异应用到步骤1所构建的真正的DOM树上,视图就更新了

虚拟DOM本质上就是在JS和DOM之间做了一个缓存。可以类比CPU和硬盘,既然硬盘这么慢,我们就在它们之间加个缓存:既然DOM这么慢,我们就在JS和DOM之间加个缓存。CPU(JS)只操作内存(虚拟DOM),最后的时候再把变更写入硬盘(DOM)。

虚拟DOM是用JS的对象结构模拟出HTML中DOM的结构,批量的增删改查,由于直接操作的是JS对象,所以速度要比操作真实DOM要快,最后更新到真正的DOM中

虚拟DOM构建的对象,除了DOM相关属性,还包括了React自身需要的属性,比如refkey等,大概如下结构:

{
  type: 'div',
  props: {
    className: 'xxx',
    children: [{
      type: 'span',
      props: {
        children: ['CLICK ME']
      },
      ref: key:
    }, {
      type: Form,
      props: {
        children: []
      },
      ref: key:
    }] | Element
  }
  ref: 'xxx',
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值