Vue3 零基础每日笔记(012):toRef 与 toRefs——解构丢响应式的终极解药
一、前言005 篇埋过一个伏笔“解构丢失响应式要用 toRefs那是 012 篇的主角”。今天它来了。这是响应式基础篇的收官前最后一课搞懂它前面所有丢响应式的坑一次性填平也为第五阶段的组合式函数铺好路。三秒回顾问题解构 断链constuserreactive({name:小明,age:18})const{name}user// ❌ 拿到的是死值 小明name小红// 页面纹丝不动Vue 也不认识这个变量了解构的一瞬间值被复印了一份出来和原对象的响应式链接当场断裂。toRef 系列的作用就一句话解构但不断链。二、toRef给单个属性办一张连卡toRef(对象, 属性名)为对象的某个属性创建一个保持链接的 reftemplate p{{ name }}/p button clickname 小红改名/button /template script setup import { reactive, toRef } from vue const user reactive({ name: 小明, age: 18 }) // name 和 user.name 是同一个东西的两扇门 const name toRef(user, name) // 改 name.valueuser.name 跟着变页面也更新 name.value 小红 console.log(user.name) // 小红 /script双向互通改name.value→user.name变改user.name→name.value也变。不是复印是同一条线的两个插头。三、toRefs全部属性一起办卡toRefs(对象)把对象第一层的每个属性都转成 toRef返回一个普通对象。它就是为解构而生的template p{{ name }}{{ age }} 岁/p button clickage过生日/button /template script setup import { reactive, toRefs } from vue const user reactive({ name: 小明, age: 18 }) // ✅ 先 toRefs 再解构每个变量都是活的 ref const { name, age } toRefs(user) /script解构出的 name、age 都是 ref改动会同步回 user页面照常更新。script 里记得 .value模板里不用——老规矩再次生效age.value// ✅ script 里// 模板里直接 {{ age }}四、黄金搭档reactive 的 state 转出去组合式函数第五阶段主角的标准套路内部用 reactive 聚合状态对外返回时 toRefs 打包调用方就能安心解构// useUser.js —— 一个迷你组合式函数import{reactive,toRefs}fromvueexportfunctionuseUser(){conststatereactive({name:小明,age:18})functiongrow(){state.age}// ❌ return state → 调用方一解构就断// ✅ return toRefs(state) → 怎么解构都是活的return{...toRefs(state),grow}}template p{{ name }}{{ age }} 岁/p button clickgrow长一岁/button /template script setup import { useUser } from ./useUser const { name, age, grow } useUser() // ✅ 解构响应式完好 /script记住这个形态第五阶段写 useMouse、useTitle 全是它。五、props 的解构同样的问题同样的解法props 也是响应式对象代理解构一样断链template p{{ msg }}/p /template script setup import { toRefs } from vue const props defineProps({ msg: String }) // ❌ const { msg } props → 父组件更新后页面不跟着变 // ✅ 正确姿势一不解构全程 props.xxx // ✅ 正确姿势二toRefs 再解构 const { msg } toRefs(props) /script面试和实战都常考props 为什么不能解构答props 是浅层响应式代理解构取出的是当时的死值断开了与父组件数据的链接需要解构时用 toRefs 保持链接。【截图位置父组件改数据子组件用 toRefs 解构后页面同步更新的演示】六、踩坑记录toRefs 只转第一层嵌套对象内部还是 reactivetoRefs(user).info.value.city用起来别扭深层就直接user.info.city访问toRef 一个不存在的属性也合法toRef(user, hobby)创建后hobby.value 篮球会写回 user适合属性动态添加的场景toRefs 后忘了 .valuescript 里age无效要age.value模板里才自动解包不要对 ref 用 toRefstoRefs 是给 reactive 对象用的ref 请直接用别套娃解构 computed 的返回值computed 返回的是 ref解构不丢响应式ref 本身就是盒子但const x computed(...).value就变死值了七、今日小结toRef / toRefs解构但不断链让解构出的每个变量保持与原对象的连接黄金搭档内部 reactive 聚合 return toRefs(state)对外暴露props 解构必须 toRefs或干脆全程 props.xxx这套姿势是组合式函数的地基第五阶段天天见作者陈志宝下篇预告响应式的面讲完了最后挖一次底Vue2 的 $set 为什么没了Vue3 改个新增属性为什么能自动更新下一篇响应式原理通俗版——Proxy vs Object.defineProperty面试高频题一次讲透。

相关新闻

Label Studio 标注 ID 机制全解析:region 与 result 的共享 ID、字符集约束与预测追踪原理

Label Studio 标注 ID 机制全解析:region 与 result 的共享 ID、字符集约束与预测追踪原理

Label Studio 标注 ID 机制全解析:region 与 result 的共享 ID、字符集约束与预测追踪原理 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitH…

2026/10/23 19:45:31 阅读更多 →
GD32H759+RT-Thread双核点灯:工控实时系统启动验证

GD32H759+RT-Thread双核点灯:工控实时系统启动验证

1. 项目概述:为什么是 GD32H759 RT-Thread?这颗芯片不是“国产替代”那么简单 GD32H759 这颗芯片刚发布时,我在工控现场做设备升级评估,第一眼看到它的规格表就停住了——不是因为参数堆得高,而是它把几个长期割裂的工…

2026/10/24 14:37:30 阅读更多 →
PXIe全混合8槽背板深度解析:从协议兼容到同步调试实践

PXIe全混合8槽背板深度解析:从协议兼容到同步调试实践

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

2026/10/25 2:07:08 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/24 11:09:31 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/24 17:47:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/24 18:34:36 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/24 9:46:55 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/24 3:09:39 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/24 21:09:59 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 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/24 9:15:56 阅读更多 →
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/24 11:09:35 阅读更多 →
黑夜航拍船只数据集训练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/24 5:28:28 阅读更多 →