数据驱动视图 vue和react对比

一句话总区别

  • Vue:自动响应式,数据变了自动更视图
  • React:手动触发更新,靠状态不可变驱动重渲染

一、核心原理对比

Vue 数据驱动

Vue 是自动依赖追踪的响应式;

  1. 通过 Proxy(Vue3)劫持对象的 get / set
  2. get 收集依赖(谁用到了这个数据)
  3. set 派发更新(通知用到的地方重新渲染)
  4. 精确知道哪个组件、哪个地方要更新

React 数据驱动

React 本身没有内置响应式系统,它是基于状态不可变和显式更新实现状态驱动。

  1. 没有数据劫持,不监听数据变化
  2. 必须调用 setState / useState 更新函数 手动触发更新
  3. 引用变化判断是否更新(浅比较)
  4. 触发后组件重新 render,再用 diff 算 DOM 差异

二、更新粒度对比

Vue

精准更新

  • 哪个响应式数据变了,就只更新用到它的组件/节点
  • 不需要你手动优化,默认性能就很好

React

组件级更新

  • 一旦 setState整个组件函数重新执行
  • 子组件也会跟着重新 render
  • 需要手动优化:React.memo / useMemo / useCallback

三、写法风格对比

Vue

  • 直接修改数据:this.count++count.value++
  • 写法自然、直观
  • 不需要关心不可变数据

React

  • 必须不可变更新,不能直接改原对象/数组
  • 要:setCount(prev => prev + 1)
  • 对象/数组要展开:setUser({ ...user, name: 'xx' })

四、性能机制对比

Vue

  • 依赖收集 = 精准更新
  • 渲染开销小,默认性能高
  • 大型对象、长列表天然更友好

React

  • 组件级重渲染 = 容易不必要渲染
  • 复杂页面必须手动优化
  • 优化成本比 Vue 高

五、一句话总结(面试必背)

  • Vue 是自动响应式,精准追踪依赖,数据变自动更视图。
  • React 是手动触发更新,基于不可变数据,组件级重渲染。
  • Vue 靠劫持 + 依赖收集 ;React 靠状态不可变 + 显式更新
相关推荐
kyriewen1 天前
程序员连夜带团队跑路,省了23万:这AI太贵,真的用不起了
前端·javascript·openai
我叫黑大帅1 天前
为什么需要 @types/react?解决“无法找到模块 react 的声明文件”报错
前端·javascript·面试
之歆1 天前
DAY_21JavaScript 深度解析:数组(Array)与函数(Function)(一)
前端·javascript
爱上好庆祝1 天前
学习js的第七天(wed APIs的开始)
前端·javascript·css·学习·html·css3
ooseabiscuit1 天前
Laravel6.x核心优化与特性全解析
android·开发语言·javascript
哆啦A梦15881 天前
20, Springboot3+vue3实现前台轮播图和详情页的设计
javascript·数据库·spring boot·mybatis·vue3
gogoing1 天前
ESLint 配置字段说明
前端·javascript
Lkstar1 天前
面试官让我手写 Promise.all / Promise.race / Promise.allSettled,我直接水灵灵地写出来了
javascript·面试
gogoing1 天前
webpack 的性能优化
前端·javascript
gogoing1 天前
Node.js 模块查找策略(require 完整流程)
javascript·node.js