Vue 中 ref 和 reactive 有什么区别?该用哪个?

发布时间:2026/11/12 23:48:39

Vue 中 ref 和 reactive 有什么区别?该用哪个? Vue 中 ref 和 reactive 有什么区别该用哪个一句话总结ref 适合「基本类型 需要重新赋值」的场景reactive 适合「对象/数组 不需要整体替换」的场景。记不住基本类型用 ref对象用 reactive需要整体替换的用 ref 包对象就这么简单正文目录ref 和 reactive 的核心区别是什么5 大高频场景 代码示例万能兜底ref vs reactive 决策表预防 checklist不再踩坑一句话总结一、ref 和 reactive 的核心区别是什么问题背景Vue 3 的响应式系统基于Proxy提供了ref和reactive两种创建响应式数据的 API很多开发者分不清什么时候用哪个。对比项refreactive支持类型任意类型基本类型 对象仅对象/数组访问方式.value模板中自动解包直接访问属性重新赋值✅ 直接xxx.value newVal❌ 丢失响应式解构需要配合toRefs直接解构会丢失响应式模板中使用自动解包无需.value直接使用深层响应✅ 默认深层✅ 默认深层import{ref,reactive}fromvue// ✅ ref基本类型constcountref(0)count.value// JS 中需要 .value// 模板中{{ count }} 自动解包不需要 .value// ✅ reactive对象conststatereactive({name:Claw,age:3})state.age4// 直接修改属性// ❌ reactive 整体替换 → 丢失响应式statereactive({name:New,age:5})// 不报错但响应式断了二、5 大高频场景 代码示例场景 1计数器 / 开关 → 用 ref基本类型需要频繁修改用 ref 最直观。// ✅ 正确基本类型用 refconstisLoadingref(false)constcountref(0)constmessageref(hello)functiontoggle(){isLoading.value!isLoading.value}// ❌ 错误reactive 不支持基本类型constcountreactive(0)// Vue 警告value should be an object场景 2表单对象 → 用 reactive多个关联字段组成一个对象不需要整体替换用 reactive 更自然。script setup import { reactive } from vue // ✅ 表单对象用 reactive const form reactive({ username: , password: , remember: false }) function submit() { console.log(form.username, form.password) } function reset() { // ⚠️ 逐字段重置不能整体替换 form.username form.password form.remember false } /script// ❌ 错误整体替换丢失响应式functionreset(){form{username:,password:,remember:false}// 响应式断了}场景 3需要整体替换的对象 → 用 ref从接口拿数据后整体赋值用 ref 包对象更安全。// ✅ 正确接口数据用 ref方便整体替换constuserInforef(null)asyncfunctionfetchUser(){constresawaitapi.getUser()userInfo.valueres.data// ✅ 整体替换没问题}// ❌ 麻烦reactive 要逐字段赋值constuserInforeactive({})asyncfunctionfetchUser(){constresawaitapi.getUser()Object.assign(userInfo,res.data)// 能用但啰嗦// 或者逐字段userInfo.name res.data.name ...}场景 4解构响应式对象 → 用 toRefs 配合 reactivereactive 解构后会丢失响应式必须用toRefs包装。script setup import { reactive, toRefs } from vue const state reactive({ name: Claw, age: 3 }) // ❌ 直接解构丢失响应式 // const { name, age } state // ✅ toRefs 解构保持响应式 const { name, age } toRefs(state) /script// ref 则不需要 toRefsconstcountref(0)// 模板中直接用 {{ count }}无需解构场景 5watch 监听 → ref 和 reactive 行为不同import{ref,reactive,watch}fromvue// ✅ refwatch 默认监听 .value 的变化constcountref(0)watch(count,(newVal,oldVal){console.log(${oldVal}→${newVal})})// ✅ reactivewatch 默认深层监听conststatereactive({count:0})watch(state,(newVal){console.log(state changed,newVal.count)})// ⚠️ watch reactive 的某个属性 → 需要用 getterwatch(()state.count,(newVal,oldVal){console.log(${oldVal}→${newVal})})// ⚠️ ref 包对象 → 默认不深层监听需要 deepconstobjref({count:0})watch(obj,(newVal){console.log(newVal)// obj.value {} 时触发},{deep:true})// 修改 obj.value.count 需要 deep三、万能兜底ref vs reactive 决策表场景用什么原因基本类型string/number/booleanrefreactive 不支持基本类型独立的对象/数组不需要整体替换reactive访问自然不需要.value接口返回的数据需要整体替换ref可以直接xxx.value newData表单对象reactive字段关联逐字段操作需要解构使用的对象reactivetoRefsref 不需要解构定时器/ DOM 引用ref存任意值不触发渲染组合式函数返回值ref调用方可以解构后保持响应式万能决策流程是基本类型吗 → 是 → 用 ref → 否 → 需要整体替换吗 → 是 → 用 ref包对象 → 否 → 用 reactive// 万能模板import{ref,reactive}fromvue// 基本类型constloadingref(false)consttotalref(0)// 对象 - 不需要整体替换constformreactive({name:,email:})// 对象 - 需要整体替换接口数据constlistref([])asyncfunctionloadData(){list.valueawaitapi.getList()}四、预防 checklist不再踩坑基本类型必须用ref不要用reactivereactive对象不要整体替换用Object.assign或逐字段赋值接口数据整体赋值 → 用ref包对象解构reactive→ 必须用toRefs或toRef模板中ref自动解包JS 中必须.valuewatch监听reactive属性 → 用 getter 函数() state.xxxwatch监听ref对象的深层变化 → 加{ deep: true }组合式函数返回值优先用ref方便调用方解构五、一句话总结基本类型用 ref固定结构对象用 reactive需要整体替换的对象用 ref 包裹——记不住就看要不要重新赋值要重新赋值就用 ref。最后问候亲爱的朋友们并邀请你们阅读我的全新著作 《Vue.js 3企业级项目开发实战微课视频版》
延伸阅读

更多相关文章

2026/11/11 2:17:42

网站建设的目标是什么

在这个互联网早已融入我们呼吸节奏的时代,很多企业主,尤其是那些在传统行业摸爬滚打多年的老板,每当聊到“建网站”这个话题时,眼神里总带着一种复杂的迷茫。这种迷茫,一半来源于对新技术的不熟悉,另一半则是因为他们根本不知道花钱做出来的东西到底该怎么用。很多人抱着…

2026/11/9 13:52:09

136、LLC谐振变换器的数字频率跟踪控制

136、LLC谐振变换器的数字频率跟踪控制 从一次炸机说起 去年夏天,我调试一台3kW的LLC电源,负载从空载切到半载,谐振腔电流波形突然扭曲,紧接着一声闷响——MOSFET炸了。示波器抓到的最后波形显示,开关频率在切换瞬间跳到了谐振频率以下,进入了容性区。这就是典型的频率…

2026/11/12 23:45:51

本科考电工证难不难?2026河南最新政策下如何高效备考?

本科考电工证难不难?2026河南最新政策下如何高效备考? 你是不是正愁找不到工作,因为 急需特种作业证才能上岗找工作 ?2026年河南最新政策对电工证报考条件、考试内容、证书有效期等都有调整,尤其是针对本科以上学历人群,政策门槛是否变高?今…

2026/11/12 23:45:51

电工证广德好办吗官方回应来了

电工证广德好办吗官方回应来了 之前考的证在外省能不能转过来?这个问题是很多在外地工作或者换地方的电工最关心的。现在很多人从河南周口等地转岗到广德,带着以前的电工证,不知道能不能继续使用,甚至是否能顺利办理复审或转异地。官方回应来了,我们可以…

2026/11/12 23:45:51

低压电工作业隐患怎么考 官方回应报考流程全解析

低压电工作业隐患怎么考 官方回应报考流程全解析 你现在最头疼的问题不是怎么找到工作,而是 急需特种作业证才能上岗找工作 ,尤其是低压电工作业隐患相关的内容,很多人在报名前都对流程一知半解,结果要么花了冤枉钱,要么耽误了入职时间。 官方回应…

2026/11/12 23:45:51

胶州市电工证复审别拖着,电子证书没过期也能上岗

胶州市电工证复审别拖着,电子证书没过期也能上岗 电工证没复审,就别想找工作了。最近有不少人私信我,说在胶州市找工作,但电工证已经过期,复审流程又复杂,耽误了入职时间。其实,只要及时完成【胶州市电工证复审】,拿着 电子证书…

2026/11/12 23:45:51

山东龙口电工证怎么转异地?考前押题帮你稳过!

山东龙口电工证怎么转异地?考前押题帮你稳过! 你是不是也遇到过这种情况:手里拿着山东龙口电工证,但是工作机会在别的城市,证不能异地使用,找工作的路被堵死了?特种作业证一旦无法异地使用,就等于没了“通行证”,找工作困难重重。现在别急,我来告诉…

2026/11/12 23:40:50

恭城哪里考电工证培训机构怎么选

电工证在恭城怎么考?真实经历告诉你怎么避开坑 不知道去哪报名怕被中介坑,这是很多想在恭城考电工证的朋友的真实经历。尤其是第一次报考,面对各种培训机构、报名方式和费用,简直让人摸不着头脑。今天我就从一个从业多年的视角,帮你理清楚【恭城哪里考电…

2026/11/12 20:35:13

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/12 0:04:01

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘 工地太忙根本没时间复习考试?你不是一个人。作为一名在南阳卧龙区干了七八年市政公用工程的电工,我深知这个问题的现实性。电工证不仅是工作的“入场券”,更是职业发展的“通行证”,但备考过程…

2026/11/12 0:04:01

双流电工证考别怕挂科!郑州报考避坑指南全攻略

双流电工证考别怕挂科!郑州报考避坑指南全攻略 实操考试心里没底怕挂科?双流电工证考在郑州报名,很多人因为不了解流程、准备不充分,白白浪费时间和金钱。作为三门峡应届工程类毕业生,我也曾经历过这样的焦虑。今天就从零开始,手把手教你如何避开郑州报…

2026/11/12 0:04:01

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少 之前考的证在外省能不能转过来?这个问题确实让不少准备换城市工作的朋友犯了难,尤其像电工证这种实操性很强的证书,很多人担心跨省后证书能不能继续用。其实,只要符合相关流程,是可以顺利转…

2026/11/12 22:10:13

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/12 9:51:42

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑