vue3 为什么需要toRef和toRefs
为什么在vue3中需要 toRef和toRefs先给一个最直接的答案这是响应式设计语言最底层上的根源缺陷(天生自带)。所以 toRef和toRefs就是为了弥补js语言而不得不打的补丁。下面深入看一下为什么一、JS 的值传递机制破坏了Proxy的拦截总所周知js数据类型分为基本数据类型和引用数据类型基本数据类型的值直接在栈内存中存储而引用数据类型存储在堆中并且变量保存的是地址不是原始值。搞清楚这一点后来看一下 解构的执行逻辑。js中不管对方是基本数据类型还是引用数据类型解构起到的是搬运操作。对于基本数据类型基本类型直接存储在栈内存Stack中占据固定大小的空间。解构时先得到该值所在位置然后JS 引擎在栈内存中开辟一块全新的空间把这个要解构的值复制进去。新变量指向这个新空间。修改新变量绝对不会影响源对象中的属性对于引用数据类型引用数据类型存储在堆内存Heap中占据不定大小空间栈内存只存一个指向堆内存的指针内存地址。解构时引擎取出的是栈中的指针地址比如 0xFF01。把这个地址复制给新变量新变量 b 和源对象属性指向堆内存中的同一块地址。因此修改新变量中数值源对象中也会变示例: 对 state 进行解构conststatereactive({count:0,name:Vue});const{count,name}state;根据解构原理来说 因为count 和name都是基础数据类型所以解构出来的 count和name 都是新值所以原来的proxy代理不生效。为了解决这个问题 vue3 引入了toRef 来解决来看一下简易源码classObjectRefImpl{getvalue(){// 每次你访问 .value我都去源对象上读取最新值returnthis._object[this._key];}setvalue(newVal){// 每次你设置 .value我都去修改源对象this._object[this._key]newVal;}}可以看出使用 toRef后之所以还能够保持响应式得主要原因toRef返回的根本不是响应式数据而是一个指向源对象属性的引用再来看下toRefsexportfunctiontoRefsTextendsobject(object:T):ToRefsT{// 如果不是 reactive 对象开发环境会警告但依然可以工作constresult:anyArray.isArray(object)?newArray(object.length):{};// 遍历对象的所有 keyfor(constkeyinobject){// 对每个 key 执行 toRef建立映射result[key]toRef(object,key);}returnresult;}其实toRefs就是批量执行了toRef把对象得所有属性变成ref。有了toRefs我们就能够很方便的构造出usexxx函数setup(){functionuseInfo(){conststatereactive({count:0,name:Vue});// 返回时用 toRefs 包裹模板中就可以直接写 {{ count }}无需写 state.countreturn{...toRefs(state)};}const{count,name}useInfo();}

相关新闻

A203E刷写JetPack全流程:解锁Jetson Xavier NX边缘AI算力

A203E刷写JetPack全流程:解锁Jetson Xavier NX边缘AI算力

1. 项目缘起:为什么需要为A203E刷写JetPack?如果你手头有一台A203E迷你电脑,并且发现它预装的系统版本老旧、功能受限,或者干脆就是一块“白板”,那么为它刷写NVIDIA官方的JetPack操作系统,几乎是解锁其全部…

2026/8/1 21:59:59 阅读更多 →
Gripper-B自适应机械手:从设计到实现的刚柔并济与感知先行

Gripper-B自适应机械手:从设计到实现的刚柔并济与感知先行

1. 项目概述:从“抓手”到“Gripper-B”的进化之路在自动化与机器人技术日新月异的今天,末端执行器——也就是我们常说的“机械手”或“抓手”——扮演着至关重要的角色。它就像人的手,是机器人与物理世界交互的直接接口。一个抓手的性能&…

2026/8/1 21:59:59 阅读更多 →
从PDF批注到几何绘图:Xournal++如何成为你的数字学习与创作中心

从PDF批注到几何绘图:Xournal++如何成为你的数字学习与创作中心

从PDF批注到几何绘图:Xournal如何成为你的数字学习与创作中心 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and W…

2026/8/1 21:59:59 阅读更多 →

最新新闻

网盘下载限速终结者:9大平台直链解析工具完全指南

网盘下载限速终结者:9大平台直链解析工具完全指南

网盘下载限速终结者:9大平台直链解析工具完全指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…

2026/8/1 22:42:11 阅读更多 →
插件化音乐播放器终极指南:5个高级技巧解锁MusicFreeDesktop完整潜力

插件化音乐播放器终极指南:5个高级技巧解锁MusicFreeDesktop完整潜力

插件化音乐播放器终极指南:5个高级技巧解锁MusicFreeDesktop完整潜力 【免费下载链接】MusicFreeDesktop 插件化、定制化、无广告的免费音乐播放器 项目地址: https://gitcode.com/gh_mirrors/mu/MusicFreeDesktop MusicFreeDesktop是一款真正开源的免费音乐…

2026/8/1 22:42:11 阅读更多 →
Mac终极NTFS读写解决方案:免费开源工具完整指南

Mac终极NTFS读写解决方案:免费开源工具完整指南

Mac终极NTFS读写解决方案:免费开源工具完整指南 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and management for NTFS…

2026/8/1 22:42:11 阅读更多 →
轻量化鞋材微球国产替代

轻量化鞋材微球国产替代

佳百特(jabetter)自主研发鞋材发泡微球(Expandable Microspheres),依托成熟的材料研发与生产工艺,打造适配制鞋行业的国产发泡助剂产品,可实现对进口同类产品的平稳替代。鞋材发泡微球是鞋材轻量化、柔韧化生产的核心助剂,广泛应用…

2026/8/1 22:42:11 阅读更多 →
如何快速搭建智能交易系统:Chanlun-pro缠论量化工具的完整指南

如何快速搭建智能交易系统:Chanlun-pro缠论量化工具的完整指南

如何快速搭建智能交易系统:Chanlun-pro缠论量化工具的完整指南 【免费下载链接】chanlun-pro 基于缠中说禅所讲缠论理论,以便量化分析市场行情的工具 项目地址: https://gitcode.com/gh_mirrors/ch/chanlun-pro Chanlun-pro是基于缠中说禅所讲缠论…

2026/8/1 22:42:11 阅读更多 →
OpenRocket:从零开始掌握模型火箭设计与飞行模拟的完整指南

OpenRocket:从零开始掌握模型火箭设计与飞行模拟的完整指南

OpenRocket:从零开始掌握模型火箭设计与飞行模拟的完整指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 想要设计自己的模型火箭并在发射前…

2026/8/1 22:41:11 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/8/1 13:02:46 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →