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

发布时间:2026/8/6 0:10:51

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企业级项目开发实战微课视频版》

相关新闻

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

2026/8/6 0:00:51

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

2026/8/6 0:00:51

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

2026/8/6 0:00:51

1. 项目概述:一次开源AI编程课程的深度重构 最近,我把自己的开源AI编程课程《Claude Code》做了一次从里到外的大更新。如果你对利用Claude、Codex这类大模型来辅助编程感兴趣,或者正在寻找一个能跟上最新AI编码工具迭代节奏的学习路径&#…

同步解调器:从模拟乘法到数字锁相环的实现原理与工程实践

同步解调器:从模拟乘法到数字锁相环的实现原理与工程实践

2026/8/6 1:10:54

1. 从“同步”二字说起:解调器的核心挑战在信号处理的世界里,我们常常需要从一个混杂着噪声、载波和各种干扰的信号中,把真正有用的信息“掏”出来。这个过程,就是解调。而“同步解调器”,听起来就比普通的包络检波器要…

从ChatGPT提示词到Shopify商品页:AI模板产品化全链路拆解(含自动交付系统部署脚本)

从ChatGPT提示词到Shopify商品页:AI模板产品化全链路拆解(含自动交付系统部署脚本)

2026/8/6 1:10:54

更多请点击: https://intelliparadigm.com 第一章:AI做模板售卖 人工智能正深刻重塑数字内容生产范式,其中“AI生成模板商业化分发”已成为低代码/无代码生态中最具活力的细分赛道。开发者或设计师利用大语言模型与多模态生成能力&#xff0…

3步解锁跨语言自由:Windows实时屏幕翻译神器Translumo终极指南

3步解锁跨语言自由:Windows实时屏幕翻译神器Translumo终极指南

2026/8/6 1:10:54

3步解锁跨语言自由:Windows实时屏幕翻译神器Translumo终极指南 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo …

揭秘福建省建设局网站背后的数字化变革与便民服务新机遇

揭秘福建省建设局网站背后的数字化变革与便民服务新机遇

2026/8/6 1:10:54

在这个数字化浪潮汹涌澎湃的时代,我们身处福建这片充满活力与机遇的热土,每天都在见证着城市的生长与变革。作为一名长期关注家乡发展的观察者,我常想,究竟是什么在背后推动着这一切井然有序地进行?当我们在街头漫步,看着高楼林立,基础设施日益完善,背后往往是无数数据…

小白/程序员必看:收藏这份A2A通信指南,轻松实现独立Agent协作与交付

小白/程序员必看:收藏这份A2A通信指南,轻松实现独立Agent协作与交付

2026/8/6 1:10:54

本文深入解析A2A通信机制,阐述独立Agent之间如何发现、协作与交付。通过对比Workflow、MCP与A2A的适用场景,详解Agent Card、Message、Task和Artifact的核心概念与实现方式,并针对Polling、Streaming SSE和Webhook等长任务状态获取机制进行对…

AI学日语到底靠不靠谱?实测12款工具+378小时数据对比,这3个模型真正改变学习轨迹

AI学日语到底靠不靠谱?实测12款工具+378小时数据对比,这3个模型真正改变学习轨迹

2026/8/6 1:00:54

更多请点击: https://kaifayun.com 第一章:AI学日语到底靠不靠谱?实测12款工具378小时数据对比,这3个模型真正改变学习轨迹 过去三个月,我们对12款主流AI日语学习工具(含ChatGPT-4o、Claude 3.5 Sonnet、G…

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

2026/8/4 15:23:37

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am…

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

2026/8/5 6:02:27

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架…

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

2026/8/5 8:19:55

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,…

Unity相机抖动插件Camera-Shake集成与应用实战指南

Unity相机抖动插件Camera-Shake集成与应用实战指南

2026/8/6 0:00:51

1. 项目概述与核心价值最近在做一个动作游戏,需要给主角的重击和爆炸场景加点料,让打击感更足。我第一时间就想到了给相机加个抖动效果,毕竟这是提升玩家沉浸感最简单直接的手段之一。自己手写一个也不是不行,但时间成本高&#x…

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

2026/8/6 0:00:51

1. 项目概述:为什么需要一份3.7版本的专属适配指南?如果你是一位使用Cocos Creator开发微信小游戏的开发者,并且项目正运行在3.7版本上,那么你很可能已经感受到了那份“甜蜜的烦恼”。一方面,Cocos Creator 3.7是一个功…

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

2026/8/6 0:00:51

1. 项目概述:一次开源AI编程课程的深度重构 最近,我把自己的开源AI编程课程《Claude Code》做了一次从里到外的大更新。如果你对利用Claude、Codex这类大模型来辅助编程感兴趣,或者正在寻找一个能跟上最新AI编码工具迭代节奏的学习路径&#…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/4 13:34:51

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/4 14:25:14

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/4 15:11:03

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…