位置: IT常识 - 正文

【vue3】关于ref、toRef、toRefs那些事(vue3.0中的ref)

编辑:rootadmin
【vue3】关于ref、toRef、toRefs那些事

推荐整理分享【vue3】关于ref、toRef、toRefs那些事(vue3.0中的ref),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3.0中的ref,vueref详解,vue3 ref用法,vue3使用$refs,vue3 ref dom,vue3使用$refs,vue3.0中的ref,vue3.0中的ref,内容如对您有帮助,希望把文章链接给更多的朋友!

😉博主:初映CY的前说(前端领域) 📒本文核心:ref、toRef、toRefs的使用方法

【前言】我们在上一节的学习当中,使用了reactive()函数将vue3中的数据变成响应式的数据,本文中所讲的三个方法也能实现将数据转化为响应式数据。话不多说,让我们来学习下这三个方法怎么用,以及与reactive的区别。

目录⭐一、ref⭐二、toRef⭐三、torefs⭐一、ref

ref 函数,可以把简单数据类型包裹为响应式数据(复杂类型也可以),注意 JS 中操作值的时候,需要加 .value 属性,模板中正常使用即可。 举个例子:

ref包装基本类型数据 App.vue<template> <div class="container"> <div>{{ name }}</div> <button @click="updateName">修改数据</button> </div></template><script> import { ref } from 'vue' export default { name: 'App', setup() { const name = ref('初映') const updateName = () => { name.value = '初映CY的前说' } return { name, updateName } }, }</script>

可看见写法与reactive()一样,不过是在js中书写的时候需要额外加一个.value即可

ref包装复杂类类型数据 注意:ref 其实也可以包裹复杂数据类型为响应式数据,一般对于数据类型未确定的情况下推荐使用 ref,例如后端返回的数据。<template> <div class="container"> <div>{{ data?.name }}</div> <button @click="updateName">修改数据</button> </div></template><script> import { ref } from 'vue' export default { name: 'App', setup() { // 初始值是 null const data = ref(null) setTimeout(() => { // 右边的对象可能是后端返回的 data.value = { name: '初映', } }, 1000) const updateName = () => { data.value.name = 'CY' } return { data, updateName } }, }</script>【vue3】关于ref、toRef、toRefs那些事(vue3.0中的ref)

如何选择? ref()和reactive()都是Vue.js3.0中提供的两个响应式API。 ref()主要用于创建一个响应式数据,它会将一个普通的JavaScript对象转换为一个响应式的对象,从而使数据的变化可以被Vue实例所追踪,当数据发生变化时,Vue会自动更新相关视图。ref()创建的响应式数据可以通过.value属性来访问和修改。 reactive()则主要用于创建一个响应式对象,可以用作包含多个值的状态对象,通常用于管理复杂的状态。它可以将一个普通的JavaScript对象转换为一个响应式对象,并且支持嵌套属性,即使嵌套属性发生变化也会被Vue实例所追踪。当响应式对象中有任何一个属性发生变化时,Vue也会自动更新相关的视图。 当你明确知道需要包裹的是一个对象,那么推荐使用 reactive,其他情况使用 ref 即可。 Vue3.2 之后,更推荐使用 ref,性能得到了很大的提升。⭐二、toRef

toRef 函数的作用:转换响应式对象中某个属性为单独响应式数据,并且转换后的值和之前是关联的(ref 函数也可以转换,但值非关联)。 先看下面这个例子:

<template> <div class="container"> <h2>name: {{ obj.name }} age: {{obj.age}}</h2> <button @click="updateName">修改数据</button> </div></template><script> import { reactive } from 'vue' export default { name: 'App', setup() { const obj = reactive({ name: '初映', age: 18, address: '江西', sex: '男', }) const updateName = () => { obj.name = '初映CY的前说' } return { obj, updateName } }, }</script>

这样写也可以将数据进行更改成为响应式的数据,但是带来了两个问题:

问题 1:模板中都要使用 obj. 进行获取数据,麻烦。

问题 2:明明模板中只用到了 name 和 age,却把整个 obj 进行了导出,没必要,性能浪费。

<template> <div class="container"> <h2>name: {{ name }} </h2> <button @click="updateName">修改数据</button> </div></template><script> import { reactive,toRef } from 'vue' export default { name: 'App', setup() { const obj = reactive({ name: '初映', age: 18, address: '江西', sex: '男', }) const name = toRef(obj, 'name') const updateName = () => { obj.name = '初映CY的前说' } return { name, updateName } }, }</script>

这样把我们需要的数据放进return即可,节约了性能与在模板中的写法,有点点了‘按需导入’的意思

⭐三、torefs

toRefs 函数的作用:转换响应式对象中所有属性为单独响应式数据,并且转换后的值和之前是关联的。

<template> <div class="container"> <h2>{{ name }} {{ age }}</h2> <button @click="updateName">修改数据</button> </div></template><script> import { reactive, toRefs } from 'vue' export default { name: 'App', setup() { const obj = reactive({ name: '初映', age: 10, }) const updateName = () => { obj.name = '初映CY的前说' obj.age = 18 } return { ...toRefs(obj), updateName } }, }</script>

toRefs将我们所有的响应式数据都进行return出去了,届时直接用上数据名称即可,记得加上…喔

至此本文结束,愿你有所收获! 期待大家的关注与支持! 你的肯定是我更新的最大动力!!!

本文链接地址:https://www.jiuchutong.com/zhishi/299775.html 转载请保留说明!

上一篇:使用Spring框架进行Web项目开发(初级)(使用spring框架,大概有哪些步骤)

下一篇:【自学前端】我只学这些够吗?好难(自学前端好学吗)

  • iqoo8怎么截长图(iqoo手机怎么截长图)

    iqoo8怎么截长图(iqoo手机怎么截长图)

  • 华为耳机可以连接苹果手机吗(华为耳机可以连接两个手机吗)

    华为耳机可以连接苹果手机吗(华为耳机可以连接两个手机吗)

  • OPPO Ace2是双扬声器吗(ace2双扬声器在哪)

    OPPO Ace2是双扬声器吗(ace2双扬声器在哪)

  • tt语音提现比例(tt语音提现要多少手续费)

    tt语音提现比例(tt语音提现要多少手续费)

  • iphonex打电话没声音免提有声音(iphonex接电话没声音,打电话可以听到声音)

    iphonex打电话没声音免提有声音(iphonex接电话没声音,打电话可以听到声音)

  • 荣耀9x有多长(华为荣耀9x手机有多长)

    荣耀9x有多长(华为荣耀9x手机有多长)

  • 宽带los灯不亮正常吗(宽带猫los灯不亮是什么意思)

    宽带los灯不亮正常吗(宽带猫los灯不亮是什么意思)

  • 华为nova6手机桌面时间不见了怎么设置(华为nova6手机桌面的图标怎么隐藏起来)

    华为nova6手机桌面时间不见了怎么设置(华为nova6手机桌面的图标怎么隐藏起来)

  • 华为mate30pro充电器多少瓦(华为mate30pro充电多少w)

    华为mate30pro充电器多少瓦(华为mate30pro充电多少w)

  • 清理微信至初始状态是会怎样(微信清除设备在哪里)

    清理微信至初始状态是会怎样(微信清除设备在哪里)

  • 关闭戴尔bios电源适配器警告(戴尔电脑关闭bios自检)

    关闭戴尔bios电源适配器警告(戴尔电脑关闭bios自检)

  • 抖音怎么指定不给谁看(抖音怎么指定不让某人看我作品)

    抖音怎么指定不给谁看(抖音怎么指定不让某人看我作品)

  • 微信朋友圈怎么搜索之前的内容(微信朋友圈怎么定位到别的城市)

    微信朋友圈怎么搜索之前的内容(微信朋友圈怎么定位到别的城市)

  • 微信免密支付在哪里关(微信分付在哪里开通)

    微信免密支付在哪里关(微信分付在哪里开通)

  • 华为手机怎么连拍照片(华为手机怎么连接车载carplay)

    华为手机怎么连拍照片(华为手机怎么连接车载carplay)

  • 手机不对焦了怎么回事(手机不对焦怎么维修)

    手机不对焦了怎么回事(手机不对焦怎么维修)

  • 手机怎么关闭降噪功能(手机怎么关闭降噪)

    手机怎么关闭降噪功能(手机怎么关闭降噪)

  • 怎么进去喵铺(喵铺淘气值在哪里看)

    怎么进去喵铺(喵铺淘气值在哪里看)

  • 快手怎么看别人直播人数(快手怎么看别人的点赞)

    快手怎么看别人直播人数(快手怎么看别人的点赞)

  • 苹果xs多重(苹果xs多重多少g)

    苹果xs多重(苹果xs多重多少g)

  • 华为p20充电器叫什么(华为p20充电器叫啥名字)

    华为p20充电器叫什么(华为p20充电器叫啥名字)

  • 韩剧TV怎么缓存视频(韩剧tv怎么缓存到本地)

    韩剧TV怎么缓存视频(韩剧tv怎么缓存到本地)

  • 淘宝人生怎么玩(淘宝人生怎么玩多个账号)

    淘宝人生怎么玩(淘宝人生怎么玩多个账号)

  • 苹果11后面是玻璃的吗(苹果11后面玻璃有印子怎么去除)

    苹果11后面是玻璃的吗(苹果11后面玻璃有印子怎么去除)

  • 手机方向锁定是什么意思(手机方向锁定是干什么用的)

    手机方向锁定是什么意思(手机方向锁定是干什么用的)

  • cad全图显示快捷键(cad中全图显示快捷键)

    cad全图显示快捷键(cad中全图显示快捷键)

  • 华为coral10什么型号(华为coral10参数)

    华为coral10什么型号(华为coral10参数)

  • 苹果无线耳机功能介绍(苹果无线耳机功能键使用)

    苹果无线耳机功能介绍(苹果无线耳机功能键使用)

  • Unity存储路径具体位置整理(Win+Android+ios)(unity默认存储路径)

    Unity存储路径具体位置整理(Win+Android+ios)(unity默认存储路径)

  • 小规模差额申报怎么申报
  • 发票几个月内可以红冲作废
  • 对公的etc怎么绑定怎么充值
  • 企业将重组债务转为权益工具
  • 原始凭证的主要类型
  • 租赁合同印花税计算
  • 公司收到股东的投资款以后怎么处理
  • 重新建账要以前的期初余额吗
  • 没有认证方式
  • 一般纳税人出租不动产增值税税率
  • 电费先付后开票怎么做账
  • 资产负债表中应收账款的计算公式
  • 企业的商誉会一直存在吗
  • 企业预付的固定资产折旧
  • 发票遗失登报费用账务处理
  • 原材料损失计入
  • 应付账款借方余额怎么平账
  • 企业所得税以前年度亏损怎么弥补
  • apple ID怎么解绑设备
  • window10过期
  • 小规模纳税人可以开增值税专用发票吗
  • 关于怀孕在线咨询
  • php中split
  • Win11 Build 22000.282正式版推送: 附更新修复内容汇总
  • 企业的股息红利所得
  • 现金付款凭证是什么意思
  • 开具增值税发票哪些情形不用交税?
  • 销售旧固定资产开票税目是什么
  • 前端实现文件下载功能
  • 进项发票认证后怎么做账
  • 【强化学习探索01】Win10 下gym安装
  • chatGPT背后的真正逻辑
  • php制作验证码
  • ant design vue 表单
  • php常用数组函数有哪些
  • 购进的产品样品怎么入账
  • 代垫运费的增值税可以抵扣吗
  • webstorm功能
  • 前端 大前端
  • jquery 元素
  • 命令default
  • 美国人用什么英语词典
  • 企业对外担保代偿能否税前扣除 税务局
  • 缴税的会计处理
  • 服务费减免税款怎么算
  • 其他收益在利润表填在哪里
  • 资本公积根据什么填列
  • db2replace函数用法
  • 暂缓收缴工会经费申请
  • 企业购买黄金可以避税
  • sqlserver2012备份
  • 收到的技术服务费计入什么科目
  • 合伙企业的合伙人有下列情形中的当然退伙
  • 公司注销前的发票怎么查
  • 利息支出应计入什么科目
  • 汇算清缴补交的所得税怎么记帐
  • 医保卡收到钱
  • 律师的行业
  • 公司支付质保金怎么做账
  • centos7.6怎么安装
  • mysqldump命令在哪里执行
  • mysql存储过程判断输入判断类型
  • windows 8.1 build 9600
  • 在linux中使用哪个命令可以用于管理用户账户
  • win7检测有错误怎么办
  • CentOS系统中与时间的相关命令详解
  • win7 ready
  • windows xp windows
  • vps如何搭建ss
  • Node.js中的全局变量有哪些
  • 简述图像批处理的操作过程
  • python输出代码怎么写
  • python获取当前地址
  • unity gui layer
  • 封装是什么意思?
  • js 比较
  • 江苏电子税务局电话
  • 企业信息公示在哪里打印
  • 船舶吨税是中央税还是地方税
  • 企业将持有的交易性金融资产售出,实际收到出售价款
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设