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 + 组件级重渲染
相关推荐
keyipatience3 小时前
JavaScript学习(1)书写位置,变量、数据类型、运算符
开发语言·前端·javascript·css·学习
朱涛的自习室3 小时前
我给 Gemini 4 和 DeepSeek 搞了套「末位淘汰」,AI 干活会更猛吗?(Day 3)
android·前端·后端
java1234_小锋6 小时前
【技术专题】HTML5 网页技术 - HTML5简介 & HTML5 文档结构
前端·html·html5
鶴哥只手遮天6 小时前
Vue 3 核心源码深度剖析系列(v3.5.44)-第 1 章 项目全景:monorepo 架构与工程化体系
前端·vue.js·开源
流星。。方6 小时前
小团队官网SEO落地:前端语义化与静态生成的工程实践
前端·状态模式
小天源6 小时前
智叟云集系统架构解析:从品牌 AI 可见度监测到前后端协同
人工智能·react.js·系统架构·node.js·react·ai监测·ai品牌监测
用户530429765796 小时前
盘点危化品搬运诊断的6类工具与自处理边界判断
前端
curtain6 小时前
从古法编程到 Agent:我入行这两年,AI 改变了什么
前端·openai
zyfts6 小时前
10分钟自制Codex钉钉通知Skill:AI干完活自动钉钉提醒你
前端
大孜然6 小时前
孜然QQ频道自动化程序机器人配置教程
前端