发布时间:2026/8/1 22:02:08
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();}

相关新闻

2026/8/1 22:02:08

SpringBoot2+Vue3+MySQL 美食分享平台源码 前后端分离实战项目

一、项目简介 本项目是一个基于 Spring Boot 2 Vue 3 MySQL 技术栈开发的前后端分离美食分享平台。系统采用经典的前后端分离架构,后端提供 RESTful API 接口,前端通过 Vue 3 单页应用进行交互。平台包含普通用户端和管理员端两大角色:普通…

2026/8/1 22:02:08

Seroval 未来路线图:即将推出的 5 大新功能预览

Seroval 未来路线图:即将推出的 5 大新功能预览 【免费下载链接】seroval Stringify JS values 项目地址: https://gitcode.com/gh_mirrors/se/seroval Seroval 作为一款高效的 JavaScript 值序列化工具,正不断优化其核心能力。本文将为你揭秘 Se…

2026/8/2 2:53:19

基于Hadoop大数据的豆瓣电影数据分析可视化系统

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 2:53:19

吉他弦距测量与调整全攻略:从原理到实战优化演奏手感

吉他弦距是影响演奏手感、音色和乐器健康状态的关键参数。弦距过高,按弦费力,推弦困难,长时间演奏手指容易疲劳甚至疼痛;弦距过低,则容易出现打品杂音,音色发虚,动态表现差。无论是新手调整第一…

2026/8/2 2:53:19

免费解锁9大网盘下载速度:终极直链下载助手使用指南

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

2026/8/2 2:53:19

基于SpringBoot+Vue的高校考研交流平台系统(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 2:53:19

血压预测研究:从MIMIC到UCI,核心数据集选择与预处理实战指南

1. 血压预测研究的数据基石:为什么数据集如此重要?在心血管健康研究,特别是血压预测这个细分领域里,无论你的模型是复杂的深度学习网络,还是经典的机器学习算法,其最终的预测精度和泛化能力,很大…

2026/8/2 0:02:18

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/2 0:02:18

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/2 1:52:02

实测才敢推 AI论文网站 2026最新测评与推荐

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

2026/8/1 0:03:49

2026必备!AI论文网站测评:最新推荐与深度对比

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

2026/8/1 0:03:49

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

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