《Vue3 从入门到大神06篇》ref 还是 reactive?一文搞懂响应式数据的选择
在 Vue3 中我们拥有了两个创建响应式数据的 APIrefreactive于是几乎所有初学者都会遇到同一个问题❓什么时候用 ref什么时候用 reactive​❓为什么 ref 要写.value​❓为什么解构会丢失响应式这篇文章我们就来一次把这些疑问彻底讲清楚。一、一句话结论先给你答案数据类型推荐 API基本类型string / number / boolean✅ref对象 / 数组✅reactive或ref表单字段 / 单个状态✅ref复杂状态对象✅reactive经验法则能用 ref 解决的就用 ref复杂对象再用 reactive。二、ref为基本类型而生1️⃣ ref 的基本用法import { ref } from vue const count ref(0) count.value console.log(count.value) // 12️⃣ 为什么 ref 需要.value因为JavaScript 的基本类型不是对象不能被 Proxy 直接代理。Vue3 的解决方案是ref(0) → { value: 0 }ref 本质用一个对象包裹基本类型对这个对象的value做响应式处理三、reactive为引用类型而生1️⃣ reactive 的基本用法import { reactive } from vue const state reactive({ count: 0, user: { name: Tom } })2️⃣ 使用方式state.count state.user.name Jerry✅不需要.value​✅可以直接访问属性四、ref 和 reactive 的本质区别对比项refreactive包装方式{ value }Proxy支持类型基本 引用仅引用.value必须不需要替换整个对象✅ 支持❌ 丢失响应式解构❌ 易丢响应式✅ 可直接解构五、.value的底层原理面试重点1️⃣ ref 的简化实现function ref(value) { const wrapper { value } return reactive(wrapper) }核心思想ref内部其实也用了reactive只是多包了一层value六、解构为什么会丢失响应式非常重要1️⃣ 错误示例const state reactive({ count: 0 }) const { count } state count // ❌ 不再是响应式2️⃣ 原因图解state.count → Proxy count → 普通数字脱离 Proxy结论解构得到的是“值本身”不是“代理引用”。七、如何正确解构响应式数据✅ 方案 1toRefsimport { reactive, toRefs } from vue const state reactive({ count: 0 }) const { count } toRefs(state) count.value✅ 方案 2保持 state 不变state.count八、ref 和 reactive 的常见误区❌ 误区 1reactive 可以替换 refconst count reactive({ value: 0 }) // ❌ 不推荐原因语义混乱不符合 Vue 设计初衷。❌ 误区 2ref 不能包对象const user ref({ name: Tom })✅这是允许的但注意user.value.name Jerry九、实战选择建议强烈建议收藏✅ 表单场景const username ref() const password ref()✅ 复杂业务对象const user reactive({ id: 1, name: , roles: [] })✅ 组合式函数返回function useCounter() { const count ref(0) const inc () count.value return { count, inc } }十、面试高频问答Q1ref 为什么要.value因为基本类型不能被 Proxy 代理需要包一层对象。Q2reactive 解构为什么会失效解构得到的是原始值脱离了 Proxy。Q3什么时候用toRefs当你需要把 reactive 拆成多个 ref 使用时。十一、总结ref基本类型 单个状态reactive复杂对象.value是 ref 的设计必然解构 reactive 会丢失响应式toRefs是解决手段 下期预告第 07 篇计算属性与侦听器 —— computed 与 watch 的高级玩法

相关新闻

AIBlog:面向AI前沿论文的自主代理式技术解构系统

AIBlog:面向AI前沿论文的自主代理式技术解构系统

1. 项目概述:一个每天替我读完前沿论文的“数字研究员”你有没有过这种体验:早上打开arXiv,首页刷出27篇新论文,标题里一半是“LLM”“Diffusion”“Qwen”“Phi-4”,另一半是“NeRF”“GNN-Sym”“FP8-TMA”——光看标…

2026/6/18 4:50:58阅读更多 →
Win11 装 OpenClaw 频繁报错?一套完整落地部署流程一次性理清

Win11 装 OpenClaw 频繁报错?一套完整落地部署流程一次性理清

📌 一、认识 OpenClaw(小龙虾)及核心亮点 很多人会将 OpenClaw 等同于普通对话类 AI,实际上它是一款可以操控本地电脑的智能数字员工。它能够识别自然语言指令,自主拆解复杂任务、调用系统工具并完成全流程操作&#…

2026/6/18 4:45:58阅读更多 →
OpenCore Legacy Patcher深度解析:3大技术突破让老Mac重获新生

OpenCore Legacy Patcher深度解析:3大技术突破让老Mac重获新生

OpenCore Legacy Patcher深度解析:3大技术突破让老Mac重获新生 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当苹果官方宣布你的Mac设备"寿…

2026/6/18 4:45:58阅读更多 →
如何构建专业AI终端评测系统:5步实现自动化评估实战指南

如何构建专业AI终端评测系统:5步实现自动化评估实战指南

如何构建专业AI终端评测系统:5步实现自动化评估实战指南 【免费下载链接】terminal-bench A benchmark for LLMs on complicated tasks in the terminal 项目地址: https://gitcode.com/GitHub_Trending/tb/terminal-bench 还在为AI模型在真实终端环境中的表…

2026/6/18 6:21:04阅读更多 →
SegFormer实战指南:显存优化与跨分辨率泛化

SegFormer实战指南:显存优化与跨分辨率泛化

1. 项目概述:为什么SegFormer不是又一个“Transformer套壳”,而是语义分割的务实革命我第一次在Cityscapes验证集上跑通SegFormer-B3时,心里想的不是“哇,SOTA又刷新了”,而是“终于不用再为显存炸掉重调batch size焦头…

2026/6/18 6:21:04阅读更多 →
图像隐写术与检测技术:INN方案的安全漏洞与ICA检测方法

图像隐写术与检测技术:INN方案的安全漏洞与ICA检测方法

1. 图像隐写术与检测技术概述在数字信息时代,数据安全始终是核心议题之一。图像隐写术作为一种特殊的信息隐藏技术,其核心目标是将秘密信息嵌入到普通图像中,使这些修改对人眼和常规分析工具都不可察觉。与加密技术不同,隐写术的重…

2026/6/18 6:21:04阅读更多 →
Grok 4.3 Beta深度解析:原生多模态与2M上下文如何重构AI工作流

Grok 4.3 Beta深度解析:原生多模态与2M上下文如何重构AI工作流

1. 项目概述:这不是一次常规升级,而是一次多模态工作流的底层重写我用 Grok 4.3 Beta 连续高强度跑了三周,从早八点到凌晨一点,中间穿插了视频拉片、前端克隆、车间数据诊断、跨平台脚本调度等真实生产场景。它给我的第一感觉不是…

2026/6/18 6:21:04阅读更多 →
Cursor Free VIP终极指南:永久免费解锁AI编程助手完整功能

Cursor Free VIP终极指南:永久免费解锁AI编程助手完整功能

Cursor Free VIP终极指南:永久免费解锁AI编程助手完整功能 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your…

2026/6/18 6:21:04阅读更多 →
工业AI视觉规模化落地:从托盘扫描到流式感知的实战架构

工业AI视觉规模化落地:从托盘扫描到流式感知的实战架构

1. 项目概述:这不是一句新闻稿,而是一组被压缩的工业现场密码“Gather AI Is Scaling Rapidly: 8x Pallets Scanned in Q1 2022 Than All of 2021”——这句话乍看像某家AI公司发在LinkedIn上的季度战报,但如果你在物流中心干过三年以上&…

2026/6/18 6:16:03阅读更多 →
ZigBee HA智能家居开发实战:从集群模型到NXP JN516x代码实现

ZigBee HA智能家居开发实战:从集群模型到NXP JN516x代码实现

1. ZigBee HA:智能家居的“通用语言”与开发基石如果你正在或计划踏入智能家居设备开发领域,尤其是基于ZigBee协议,那么“ZigBee Home Automation”这个名词你一定不陌生。它不仅仅是ZigBee联盟定义的一套应用层规范,更是确保不同…

2026/6/18 0:00:24阅读更多 →
Java毕设选题推荐:基于 Spring Boot 的个人随笔博客运维管理系统的设计与实现 基于 Spring Boot 的用户原创博客分享社区【附源码、mysql、文档、调试+代码讲解+全bao等】

Java毕设选题推荐:基于 Spring Boot 的个人随笔博客运维管理系统的设计与实现 基于 Spring Boot 的用户原创博客分享社区【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/18 0:00:24阅读更多 →
JN517x嵌入式开发实战:看门狗、脉冲计数器与I2C接口的深度解析与避坑指南

JN517x嵌入式开发实战:看门狗、脉冲计数器与I2C接口的深度解析与避坑指南

1. 项目概述在嵌入式开发领域,尤其是基于NXP JN517x这类无线微控制器的项目中,系统稳定性和与外设的可靠交互是两大核心挑战。前者关乎产品能否在无人值守的复杂环境中长期运行,后者则决定了设备能否准确感知世界并与其他芯片“对话”。JN517…

2026/6/18 0:00:24阅读更多 →