React 虚拟 DOM 和 Diff 算法

React 使用虚拟 DOM 和 Diff 算法实现高效视图更新。当 state 变化时,React 不再全量渲染,而是通过创建新的虚拟 DOM 并对比旧的虚拟 DOM,找出最小更新路径进行 patch,从而只更新变化的部分,提高性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虚拟 DOM 和 Diff 算法

  • React 更新视图的思想是:只要 state 变化就重新渲染视图
  • 特点:思路非常清晰
  • 问题:组件中只有一个 DOM 元素需要更新时,也得把整个组件的内容重新渲染到页面中? nononono
  • 理想状态:部分更新,只更新变化的地方
  • 问题:React 是如何做到部分更新的?虚拟 DOM 配合 Diff 算法
  • 虚拟DOM:本质上就是一个 JS 对象,用来描述你希望在屏幕上看到的内容(UI)。
  • 在这里插入图片描述

1. 执行过程

  1. 初次渲染时,React 会根据初始 state (Model),创建一个虚拟 DOM 对象(树)。
  2. 根据虚拟 DOM 生成真正的 DOM,渲染到页面中。
  3. 当数据变化后(setState()),重新根据新的数据,创建新的虚拟 DOM 对象(树)。
  4. 与上一次得到的虚拟 DOM 对象,使用 Diff 算法 对比(找不同),得到需要更新的内容。
  5. 最终,React 只将 变化的内容 更新(patch)到 DOM 中,重新渲染到页面。
    (patch 就是打补丁的意思,就是说哪里发生了变化就在哪里打一个补丁)

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值