Vue 3 响应式原理是什么?Proxy、ref 和 reactive 有什么区别?
Vue 3 响应式原理是什么Proxy、ref 和 reactive 有什么区别Vue 3 的 reactive 为对象创建响应式代理。依赖执行时读取属性系统记录这段逻辑依赖哪个属性属性改变后再通知相关依赖更新。Proxy 负责拦截操作依赖收集和触发机制负责建立对应关系。不是任意一次读取都会登记也不是每次修改都让整页立即重新渲染组件更新还会经过调度。ref 则用带 .value 的包装让基本类型和对象都能作为响应式值使用。reactive 更适合直接组织对象属性ref 也方便整体替换值。解构 reactive 中的基本类型属性会得到当时的普通值后续访问不再经过原代理。需要保留与原属性的连接时可以使用 toRef 或 toRefs。对象属性的解构要另外看它是否仍然指向响应式对象。拦截读写怎样变成更新页面先建立一个具体关系假设页面显示state.count。组件渲染时会读取这个属性。Vue 在这一轮渲染逻辑执行期间能够知道当前有哪些属性被使用。于是它记下来“这个渲染逻辑需要 count。”以后 count 改变就能找到需要重新执行的逻辑。如果另一段逻辑只读 name它不应该仅仅因为 count 改了就成为 count 的直接依赖。这就是“依赖收集”要解决的事情。只说 Proxy 可以拦截还没有说明页面与属性怎样建立关系。读取时记录修改时通知可以把主要过程理解成三步某段需要跟踪的逻辑开始执行成为当前活跃的依赖。它读取代理属性系统记录对象、属性与依赖之间的关系。属性改变后系统找到相关依赖触发或调度它们重新执行。Vue 官方响应式原理给出了 track 与 trigger 的教学示意。实际实现还需要处理嵌套执行、过期依赖清理、数组与集合等情况不能拿几行伪代码当完整源码。如果代码只在普通函数里随手读了一次属性而没有处于依赖收集的执行过程中就不能认为这个函数以后会自动再次运行。reactive 和 ref不只是对象与数字的区别reactive 返回对象代理。对属性读写才能经过代理的拦截。如果还拿原始对象直接修改就绕开了这条入口。ref 返回一个带.value的容器对这个值的读取与修改也能被跟踪。它可以保存数字也可以保存对象对象值通常会经过响应式转换shallowRef 等 API 则有不同约定。因此“对象一定用 reactive数字一定用 ref”只是一种简化习惯不是能力边界。如果经常需要替换整个值比如请求完成后把结果列表整体换掉ref 的.value 新值往往比较直接。reactive 则更适合保留一个代理对象修改其中属性。解构后为什么有时不更新看一个 Vue 3 局部示例import{reactive,toRef}fromvue;conststatereactive({count:0});const{count}state;// 当时读出的普通数字constlinkedCounttoRef(state,count);state.count2;console.log(count);// 0console.log(linkedCount.value);// 2linkedCount.value3;console.log(state.count);// 3普通数字被取出来以后变量与原属性已经不是同一个可追踪入口。toRef 则保留了指向该属性的连接。不过如果解构的是一个响应式对象引用继续修改那个对象的属性仍然可能触发响应式。问题是“变量绑定是否与原属性相连”不能简单背成“只要解构就彻底没响应式”。这里的代码针对 Vue不提供不同语言里名为 Proxy 的对象来冒充同一机制。数据改变了DOM 为什么还没立即改变响应式通知和 DOM 已更新是两个时间点。Vue 通常把组件更新放进调度队列合并同一轮中的多个变化避免每修改一个值就立刻重复更新。需要在更新后读取 DOM可以使用 nextTick 等待相应更新完成。computed 则是在响应式系统上建立派生值。它会跟踪所读取的依赖并按缓存与求值规则工作不是普通函数换了一个名字。讲到这里才能从数据读写一路解释到组件更新而不是只回答“Vue 3 用了 Proxy”。面试官继续追问Proxy 能直接代理数字吗不能直接以基本类型作为 Proxy 的目标对象。ref 提供了包装入口使数字等值也能进入响应式系统。reactive 返回值等于原对象吗引用身份不同。代理虽然表现得像原对象但proxy original通常为 false。项目中最好统一通过代理操作避免混用导致追踪问题。模板里为什么常常不用写 .valueVue 模板提供了 ref 解包规则但规则有具体适用条件。JavaScript 代码中操作 ref通常仍然使用 .value不能把模板便利理解成容器不存在了。面试速记卡Proxy拦截操作不独自完成整套响应式。读取阶段在依赖执行时记录对象、属性与依赖的关系。修改阶段通知相关依赖组件更新还要经过调度。ref 与 reactive容器值和对象代理都有适合的组织方式。解构边界基本类型会断开属性连接可用 toRef 保留连接。我是程序员Sunday。本文收录于 sunday面试指南原文与配图可继续阅读。

相关新闻

如果你想拥有自己的 Agent,为什么值得从 rpi 开始

如果你想拥有自己的 Agent,为什么值得从 rpi 开始

如果你只是想找一个好用的 coding agent,直接安装一个现成产品通常是最省事的选择。 但如果你要把 Agent 放进自己的产品、服务或开发工具里,问题就变了:你需要的可能不是一个只能通过命令行使用的工具,而是一套自己能够拥有和控制…

2026/10/14 3:35:37 阅读更多 →
2026年免费AIGC检测工具实测:每天两次免费查AI率,20万字一次测完!

2026年免费AIGC检测工具实测:每天两次免费查AI率,20万字一次测完!

2026年免费AIGC检测工具实测:每天两次免费查AI率,20万字一次测完! 2026年做论文,AIGC检测几乎成了必经的一关。市面上免费的检测工具有一些,但能整篇测、报告又详细的不多。 我实测了今年的一款免费AIGC检测工具Pape…

2026/10/14 3:35:37 阅读更多 →
逻辑严谨吗?8款AI论文软件势力榜,毕业无忧秘籍!

逻辑严谨吗?8款AI论文软件势力榜,毕业无忧秘籍!

写论文时是否总感觉思路混乱,无从下手?文献资料太多,却理不出逻辑脉络?查重反复修改,格式调整又耗时费力? 别担心!AI论文写作工具正成为高校学子的得力助手。本文将围绕学术规范性、文献整合能力…

2026/10/14 3:35:37 阅读更多 →

最新新闻

Dropout 正则化原理与实战:从过拟合到泛化能力提升

Dropout 正则化原理与实战:从过拟合到泛化能力提升

1. 为什么一个"随手关掉神经元"的操作能成为深度学习的基石第一次在代码里写下nn.Dropout(p0.5)的时候,我其实没太当回事——不就是训练时随机扔掉一半神经元嘛,听起来像个正则化的小把戏。直到有一次复现一篇图像分类论文,模型在训…

2026/10/14 4:24:51 阅读更多 →
从60到150 t/s:Strata推理栈与INT4量化在48G显存上的实战调优

从60到150 t/s:Strata推理栈与INT4量化在48G显存上的实战调优

1. 先说说那三秒:149.7 t/s 砸到眼前那天晚上我蹲在测试机前面,盯着终端里不断滚动的数字,一时没回过神来。屏幕上清清楚楚写着“149.7 t/s”。按标题里的说法,就是那套组合——内部代号 Strata 的推理栈,加上一个叫 q…

2026/10/14 4:24:51 阅读更多 →
Java毕设实战:基于爬虫的题库自动生成系统完整解析

Java毕设实战:基于爬虫的题库自动生成系统完整解析

简介:毕设项目-利用爬虫的题库自动生成系统 是面向计算机相关专业本科生毕业设计场景的完整工程,适用于需要快速搭建可运行题管理平台的Java开发者。针对题库建设中题目来源单一、手工录入效率低等问题,整体以Java为后端核心、Vue为管理端页面…

2026/10/14 4:24:51 阅读更多 →
机械原理课程设计洗瓶机:凸轮机构实现推头匀速回程三倍速

机械原理课程设计洗瓶机:凸轮机构实现推头匀速回程三倍速

简介:基于机械原理的洗瓶机课程设计资料面向机械专业本科生,完整呈现从功能分解、运动方案设计到执行机构选型的全过程,适合完成课程设计或复习机构学知识时参考。内容围绕瓶子推进、旋转与刷洗三大动作展开,明确了推进距离600mm、…

2026/10/14 4:24:51 阅读更多 →
旅游线路查询接口分页漂移导致数据抓取错位的排查与规避

旅游线路查询接口分页漂移导致数据抓取错位的排查与规避

1. 一个看似普通的查询需求,怎么就翻车了事情是这样的,前阵子帮一个做旅游内容聚合的朋友看他们后台的数据对账问题。他们有一个模块是抓取某旅游线路平台(就是那种典型的“黑马旅游网”风格的线路查询站点)的线路数据&#xff0c…

2026/10/14 4:24:51 阅读更多 →
西门子RPC开发实战:从通信接口到产线落地的完整路径

西门子RPC开发实战:从通信接口到产线落地的完整路径

简介:这份西门子RPC开发功能文档面向工业自动化领域的开发者、设备集成工程师与数控系统调试人员,聚焦SINUMERIK 840D/840Di/810D平台下远程过程调用的接口规范与开发方法。文档系统梳理了主机接口、PLC/NCK接口、HMI与NCK/PLC的OEM交互接口等核心模块&a…

2026/10/14 4:23:50 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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 阅读更多 →