Vue 和 React 的核心渲染机制 对比

我用前端面试标准答案 + 大白话给你讲清楚,保证你一听就懂、一说就会。

Vue 和 React 的核心渲染机制一句话总结

  • Vue:响应式劫持 → 精确追踪变化 → 细粒度更新
  • React:状态更新 → 触发重渲染 → 虚拟 DOM 对比 → 最小化更新

一、Vue 渲染机制(2/3 通用,核心思想一致)

1. 数据响应式(核心)

  • Vue2:用 Object.defineProperty 劫持对象的 get/set
  • Vue3:用 Proxy 代理整个对象
  • 只要数据一变,Vue 立刻知道是哪个属性变了

2. 依赖收集

模板里用到了哪个数据,Vue 就把它记录下来,建立依赖关系:

  • 模板 → 组件 → 数据
  • 谁用了谁负责更新

3. 精确更新(细粒度更新)

某个数据变了 → 只更新用到这个数据的地方

→ 组件不会随便全量重渲染,性能天生友好

4. 虚拟 DOM 只是优化手段

Vue 并不是必须用虚拟 DOM,它是为了跨平台、批量更新才用的。


二、React 渲染机制

1. 状态不可变(Immutable 思想)

React 不监听数据,只认 state/props 有没有被设置

  • setCount() → 状态变了 → 组件触发重渲染
  • 不劫持、不监听,靠主动触发更新

2. 虚拟 DOM(核心 Diff)

  • 组件重渲染 → 生成新的虚拟 DOM 树
  • React Diff 算法对比新旧树
  • 找出最小差异,只更新真实 DOM 变化的部分

3. 全量重渲染(默认行为)

父组件更新 → 默认所有子组件跟着重渲染

需要手动优化:

  • React.memo
  • useMemo
  • useCallback

4. 调和(Reconciliation)

React 把"对比虚拟 DOM + 更新真实 DOM"的过程叫调和。


三、最核心区别

Vue React
怎么知道数据变了 数据劫持,自动监听 手动 setState,不监听
更新粒度 精确到数据/节点 组件级别重渲染
默认性能 好,自带优化 一般,需手动优化
虚拟 DOM 优化手段 核心机制
更新触发 被动(数据变就更) 主动(调用 setState)

一句话:
Vue 是"我知道你哪里变了,我只更那里"
React 是"你告诉我变了,我整棵树对比一遍再更"


四、超简记忆版(背这个就行)

  • Vue:响应式劫持 + 依赖收集 + 细粒度精准更新
  • React:状态驱动 + 虚拟 DOM Diff + 组件级重渲染
相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
A黄俊辉A4 天前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
honkun64 天前
vue 表格组件 vxe-table 配置 ajax 请求自动加载数据与表单查询
vue.js·vxe-table
kybs19914 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
汉堡大王95274 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端