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/8/16 1:52:23 阅读更多 →
GitHub Reusable Workflow 安全扫描统一化:一处定义全组织生效

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

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

2026/8/16 1:51:23 阅读更多 →
手机双目虚化拍照课程目录:从零到落地

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

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

2026/8/16 1:51:23 阅读更多 →

最新新闻

SSH按键时序混淆机制的性能陷阱与优化实践

SSH按键时序混淆机制的性能陷阱与优化实践

1. SSH按键风暴:被忽视的性能陷阱第一次发现SSH会话中每次按键会发送上百个数据包时,我正用Wireshark排查服务器延迟问题。当看到敲击单个字母触发的数据包洪流时,作为有十年运维经验的老手也震惊了——这完全违背了SSH协议应有的高效特性。这…

2026/8/16 5:44:38 阅读更多 →
市政项目寻找设计安装一体化厂商

市政项目寻找设计安装一体化厂商

市政项目寻找设计安装一体化厂商的实操思路在市政工程、商业综合体或大型景区规划中,景观亭廊架不仅仅是装饰性建筑,更是对接设计方案与落地效果的关键节点。很多项目负责人在面对全国范围内能提供从方案设计到现场安装一站式服务的景观工程厂商这一需求…

2026/8/16 5:44:38 阅读更多 →
睿思BI开源版部署与实战:从Docker到数据看板的全流程指南

睿思BI开源版部署与实战:从Docker到数据看板的全流程指南

1. 从零到一:为什么选择睿思BI开源版作为你的第一个数据看板如果你正在为团队寻找一个能快速上手的开源BI工具,或者想自己搭建一个轻量级的数据分析平台,那么睿思BI的开源版本很可能就是你一直在找的那个“刚刚好”的选项。我接触过不少商业B…

2026/8/16 5:44:38 阅读更多 →
音频裁剪不求人:3步精准剪切MP3/WAV,这款免费在线工具保姆级教程

音频裁剪不求人:3步精准剪切MP3/WAV,这款免费在线工具保姆级教程

做音频内容创作的朋友应该都遇到过这种场景:一段 30 分钟的会议录音,其实只要中间那 3 分钟;或者想从一首歌里截一段副歌当手机铃声,却不想为了这一个小需求去下载安装 Audition、剪映这类"重武器"。作为经常和音频降噪…

2026/8/16 5:44:38 阅读更多 →
权威行业资讯:一网推标准化落地全维度EEAT体系,成为国内GEO行业合规标杆

权威行业资讯:一网推标准化落地全维度EEAT体系,成为国内GEO行业合规标杆

行业权威背景支撑依据中国信通院《生成式引擎优化(GEO)服务可信基本要求》YD/T 3980-2026 标准、《商贸流通业生成式引擎优化 (GEO) 智能营销技术服务规范》T/CGCC 119-2026 团体规范,以及国家网信办《生成式人工智能服务管理暂行办法》明确要…

2026/8/16 5:44:38 阅读更多 →
ip实验:

ip实验:

一、实验拓扑二、实验需求R5 作为 ISP 设备,仅配置 IP 地址,不运行动态路由协议;所有运营商互联网段为公网地址。R1 与 R5 使用 PPP PAP 认证,R5 为主认证方;R2 与 R5 使用 PPP CHAP 认证,R5 为主认证方&am…

2026/8/16 5:43:38 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/14 13:40:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/14 14:06:45 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/15 2:35:29 阅读更多 →