vue和react的响应式有什么区别?(上)
Vue 和 React 都能做到“数据变化后更新页面”但它们感知变化的方式不同Vue 追踪“哪些响应式属性被读取和修改”React 追踪“哪个组件调用了状态更新函数”。可以先看这张核心对比表一、React显式通知式响应React 不会监听普通变量或对象属性的修改。function Counter() { let count 0 function add() { count } return button onClick{add}{count}/button }点击以后变量确实变了但页面不会更新因为 React 不知道发生了变化。必须调用 React 提供的 setterfunction Counter() { const [count, setCount] useState(0) function add() { setCount(count 1) } return button onClick{add}{count}/button }setCount做两件事记录下一次状态 请求 React 重新渲染当前组件下一次渲染时React 会重新调用Counter()生成新的 JSX再把新旧结果进行协调比较。React 官方将这一过程划分为触发渲染、执行渲染和提交 DOM 三个阶段。可以简化成setCount(1) ↓ React 安排更新 ↓ Counter() 再执行一次 ↓ 得到新的 JSX ↓ 比较新旧 UI ↓ 更新必要的 DOM二、Vue依赖追踪式响应Vue 会把状态转换成响应式对象import { reactive } from vue const state reactive({ count: 0 })Vue 3 对响应式对象主要使用Proxy。简化原理如下function reactive(obj) { return new Proxy(obj, { get(target, key) { track(target, key) return target[key] }, set(target, key, value) { target[key] value trigger(target, key) return true } }) }当组件渲染时读取state.countVue 的get拦截器会记录当前组件依赖 state.count以后执行state.countset拦截器会通知之前依赖state.count的响应式 effect组件随后重新渲染。Vue 3 对响应式对象使用 Proxy对ref的.value使用 getter/setter并通过track和trigger完成依赖收集及更新触发。过程可以简化为组件读取 state.count ↓ Vue 记录依赖关系 ↓ state.count ↓ Proxy 拦截修改 ↓ 通知依赖它的组件 ↓ 组件重新渲染三、最大的区别谁负责告诉框架发生了变化React开发者显式通知setCount(count 1)React 不关心你之前读取了哪些普通变量。它只知道某个 state setter 被调用了 当前组件需要重新计算Vue框架自动追踪count.value或者state.countVue在组件渲染过程中已经记录了这个组件读取过 count所以 count 修改后它知道应该通知哪些响应式 effect。因此可以概括为React事件驱动组件更新 Vue依赖驱动组件更新不过两者最后通常都会重新执行相应组件的渲染逻辑并同步必要的 DOM 变化。四、对象更新方式不同这是实际开发中最明显的区别之一。Vue 可以直接修改响应式对象script setup import { reactive } from vue const user reactive({ name: Alice, age: 20 }) function rename() { user.name Bob } /script template button clickrename {{ user.name }} /button /template执行user.name Bob会经过 Proxy 的set拦截因此可以触发更新。React 通常不能直接修改状态对象错误写法const [user, setUser] useState({ name: Alice, age: 20 }) function rename() { user.name Bob setUser(user) }这里传回去的仍然是原来的对象Object.is(oldUser, newUser) // trueReact 可能认为状态没有变化并跳过更新。应创建新对象function rename() { setUser(previous ({ ...previous, name: Bob })) }React 官方建议把 state 中的对象视为只读数据通过创建并传入新对象完成更新而不是直接修改原对象所以Vue以可变响应式对象为主 React以状态快照和不可变更新为主五、更新粒度有什么区别假设状态是const state { name: Alice, age: 20, address: { city: Beijing } }Vue 的依赖追踪更细如果模板只读取p{{ state.name }}/pVue 会追踪对state.name的读取。修改state.age不会触发所有读取state的响应式逻辑Vue知道修改的是age而不是name。但要注意Vue知道哪些属性触发了组件的渲染 effect不代表它直接绕过组件重新渲染、只修改一个表达式。当前 Vue 默认渲染系统仍会重新执行相关组件的渲染 effect然后借助虚拟 DOM 和编译器生成的优化信息减少比较及 DOM 操作。React 的触发单位更偏向组件const [user, setUser] useState({ name: Alice, age: 20 })调用setUser(previous ({ ...previous, age: previous.age 1 }))React知道的是这个组件的 user 状态更新了

相关新闻

我给 WorkBuddy 接上 Obsidian,被 401 和中文乱码折腾了大半天

我给 WorkBuddy 接上 Obsidian,被 401 和中文乱码折腾了大半天

大家好,我是喻勇。前两天,我盯着 WorkBuddy 左侧那排连接器看了一会儿,忽然觉得有件事挺别扭。我每天都在 Obsidian 里记东西。技术知识、故障分析、公众号草稿、读书摘记,零零散散攒了不少。可到了 WorkBuddy 里,这些…

2026/10/29 17:33:51 阅读更多 →
GitHub Reusable Workflow 安全扫描统一化:一处定义全组织生效

GitHub Reusable Workflow 安全扫描统一化:一处定义全组织生效

当组织内 50+ 仓库都需要安全扫描时,每个仓库复制 80 行 YAML 是灾难。本文介绍如何用 Reusable Workflow 实现"一处定义,全组织生效"的安全扫描统一化方案,覆盖 OIDC 认证、开关控制、钉钉通知、踩坑记录。 前言 安全左移(Shift Left)已经从理念变成了工程实践…

2026/10/31 20:14:45 阅读更多 →
手机双目虚化拍照课程目录:从零到落地

手机双目虚化拍照课程目录:从零到落地

作者:一位踩过无数坑的双目虚化算法工程师 课程定位:从零到一,带你搞懂手机双摄虚化的每一个细节25章系统掌握双目标定→预览深度→拍照深度→预览虚化→拍照虚化全流程 从单目相机模型到双目视觉基础,从立体匹配到深度图精化&…

2026/10/29 20:15:23 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/3 1:09:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/2 10:46:11 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/2 10:47:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/3 2:27:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/2 10:46:31 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/2 10:46:26 阅读更多 →

日新闻

周新闻

月新闻