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/6 2:39:11 阅读更多 →
GitHub Reusable Workflow 安全扫描统一化:一处定义全组织生效

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

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

2026/10/13 3:41:43 阅读更多 →
手机双目虚化拍照课程目录:从零到落地

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

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

2026/10/10 22:21:19 阅读更多 →

最新新闻

dsoFramer 2.3.0.2 源码编译指南:用 ActiveX 实现 Office 文档网页与 MFC 嵌入

dsoFramer 2.3.0.2 源码编译指南:用 ActiveX 实现 Office 文档网页与 MFC 嵌入

简介:dsoFramer V2.3.0.2 完整源码包,面向需要在 Visual Studio 2013 下编译、定制 COM 控件或 ActiveX 组件的 C 开发人员。资源共 106 个文件,核心为 8 个 .h 头文件与 7 个 .cpp 源文件,配套 .sln/.vcxproj 工程文件、bat 注册…

2026/10/13 19:41:29 阅读更多 →
面向Agent的轻量Workflow设计:从失控到可控的工程实践

面向Agent的轻量Workflow设计:从失控到可控的工程实践

从去年开始,我陆续做了好几个跟 Agent 相关的项目,从最初“给大模型套个 Prompt 就让它自由发挥”,到后来不得不面对多步骤、有条件分支、需要调用多个工具的真实业务场景。很快发现一个尴尬的事实:纯靠 Prompt 驱动的 Agent&…

2026/10/13 19:41:29 阅读更多 →
LiteLLM实战:统一大模型API网关与多模型路由部署全复盘

LiteLLM实战:统一大模型API网关与多模型路由部署全复盘

先说个场景:如果你手头的项目同时接了四五家大模型的 API,你会立刻发现,最麻烦的根本不是模型本身效果怎么样,而是各个服务商的接口格式不一样、报错风格不一样、限流策略不一样。今天聊的这个项目叫 LiteLLM,命令行工…

2026/10/13 19:41:29 阅读更多 →
从部署到算法:Apollo 1.4.0 避坑指南与 openspace 入门实战

从部署到算法:Apollo 1.4.0 避坑指南与 openspace 入门实战

简介:一套针对Apollo配置中心1.4.0源码进行PostgreSQL数据库适配的完整改造包,主要面向需要将配置中心数据源从MySQL切换为PostgreSQL的Java后端开发人员。由于官方发行版默认仅支持MySQL,作者基于PostgreSQL 11.4完成全部适配工作&#xff0…

2026/10/13 19:41:29 阅读更多 →
从零构建 Agent Runtime:架构、编排与工程落地全解析

从零构建 Agent Runtime:架构、编排与工程落地全解析

"Agent Runtime"这个词,这两年几乎被说烂了。但真正能把它讲清楚、真正能把它落地的人并不多。我见过太多团队,用一个大模型 API 加上几行循环代码,就对外宣称"我们做了 Agent",结果一遇到真实业务场景——多…

2026/10/13 19:41:29 阅读更多 →
5G-A通感融合能力开放:NEF架构、接口与信令流程详解

5G-A通感融合能力开放:NEF架构、接口与信令流程详解

简介:这份文档资料聚焦5G-A阶段通信感知融合的能力开放技术,面向通信领域研究者、核心网工程师及高校相关专业师生,帮助读者系统理解通感一体化从架构设计到业务落地的完整脉络。资源包内含1个docx文档,大小约151KB,内…

2026/10/13 19:40:25 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →