千家信息网

Vue3中ref toRef和toRefs的区别有哪些

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章主要为大家展示了"Vue3中ref toRef和toRefs的区别有哪些",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Vue3中ref toRef
千家信息网最后更新 2025年02月05日Vue3中ref toRef和toRefs的区别有哪些

这篇文章主要为大家展示了"Vue3中ref toRef和toRefs的区别有哪些",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Vue3中ref toRef和toRefs的区别有哪些"这篇文章吧。

一、基础

1.ref

(1) 生成值类型的响应式数据, 通过 .value修改值

上面这段代码,定义了一个ageRef变量,并每秒将ageRef加1,页面展示的数值也会加1.

(2) 可用于reactive中

将上面的代码改动如下, 引入reactive定义变量,将ref定义的变量引入reactive中, 模板中展示reactive的变量. 最后的效果和上面(1)的一样

(3) 可用于获取Dom

上面的代码中,使用toRef将state的age属性变成一个响应式变量,然后在1秒后将state的age值变为20,此时ageRef也会变成20;在2秒后将ageRef的值变为21,此时state的age值也会变成21,说明了两者保持相互引用关系

toRef针对的是响应式,针对的不是普通对象,如果用于非响应式,产出的结果不具有响应式

3.toRefs

  • 将一个响应式对象转为普通对象

  • 对象的每一个属性都是对应的ref

  • 两者保持引用关系

我们来看下面这段代码

上面的代码中,使用toRefs将state转变成一个普通对象,这时候就可以直接返回stateRefs,这时候在template就可以直接调用name和age。然后在1秒后将state的age值变为20,此时页面中的age也会变成20;在2秒后将stateRefs中的name的值变为21,此时页面中的age值也会变成21,说明了两者保持相互引用关系

toRefs将响应式对象变成普通对象后,每一个属性都具有响应式ref,此时需要使用 .value才能获取其值

4.最佳的使用方式

  • reactive做对象的响应式,ref做值类型响应式

  • setup中返回toRefs(state), 或者toRef(state, 'xxx')---(这样就能够在template中不使用state.xxx)

  • ref的变量命名都用xxxRef

  • 合成函数返回响应式对象时,使用toRefs

例如:

上面的代码,test函数中定义了响应式对象state,并通过toRefs将其转为普通对象并返回,这时候可以结构赋值,并且值是响应式的

二、深入

1.为什么需要ref

在上面我们讲到,使用reactive和toRef也可以将值类型转换成响应式的,为什么还需要ref呢?

  • 值类型不具有响应式(proxy)

  • setup()、computed()...都可能返回值类型,如果vue不定义ref,用户需要响应式的值类型的时候就会通过其他方式(reactive/toRef, reactive/toRefs)自造ref,就会造成代码更混乱

2.ref为什么需要.value

ref为什么需要加一个.value来获取值呢?为什么要这么麻烦呢?

  • ref是一个对象(不会丢失响应式),value存储值

  • 通过.value属性的get和set来实现响应式

  • 用于reactive和模板(vue编译)的时候不需要.value,其他情况都需要

3.为什么需要toRef和toRefs

  • 初衷: 在不丢失响应式的前提下,对对象数据进行解构

  • 前提: 针对的是响应式对象,不是普通对象

  • 结果: 不创造响应式,只延续响应式

以上是"Vue3中ref toRef和toRefs的区别有哪些"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

对象 代码 变量 普通 类型 属性 面的 内容 模板 篇文章 页面 元素 函数 前提 数据 方式 时候 明了 结果 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 江苏服务器电源厂家直销 中国顶级网络安全高手微博 王牌战士各个服务器玩家数量 夫妻都在中国银行软件开发 蓬莱定制软件开发 电子科技大学互联网十实验班 如何用cmd打开服务器管理器 推理小说下载软件开发 边缘世界智能人形服务器过热 有线电视网络技术培训班 郑州2019数据库用户量 天噜啦服务器出现异常 oracle数据库查询数据分组 安徽视频服务器厂家云空间 网络安全教育基地建设意见 企业用友软件数据库安装失败 两会互联网科技圈 蜀门一登录就与服务器断开连接 抚顺市信息网络安全协会的快递 西藏纳铭网络技术公司 江西服务器硬盘性能 淘宝新世界软件开发 我的世界非服务器怎么联机 南京软件开发郑州 威海电商软件开发解决方案 融资租赁公司系统软件开发 网络安全购物的英语作文 济南管理软件开发公司哪家好 检索图书信息的数据库是哪个 苏州学软件开发怎样
0