位置: 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框架,大概有哪些步骤)

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

  • QQ群如何拉人,加群方法,不被T出群的技巧(QQ群如何拉人进去)

    QQ群如何拉人,加群方法,不被T出群的技巧(QQ群如何拉人进去)

  • wps表格定位的快捷键是什么(wps表格定位快捷键)

    wps表格定位的快捷键是什么(wps表格定位快捷键)

  • qq运动头像不正常显示(qq运动头像不正常怎么办)

    qq运动头像不正常显示(qq运动头像不正常怎么办)

  • 小米体脂秤99和199区别(小米体脂称l)

    小米体脂秤99和199区别(小米体脂称l)

  • 计算器上的on/c是什么键,AC是什么键(计算器上的on/C键表示什么)

    计算器上的on/c是什么键,AC是什么键(计算器上的on/C键表示什么)

  • 电子邮件中@后面的部分是(电子邮件后面是啥)

    电子邮件中@后面的部分是(电子邮件后面是啥)

  • soul怎么实名认证(soul怎么实名认证不能开派对)

    soul怎么实名认证(soul怎么实名认证不能开派对)

  • 开启朋友验证是删了我吗(开启朋友验证是怎么操作的)

    开启朋友验证是删了我吗(开启朋友验证是怎么操作的)

  • 华为国行与非国行区别(华为非国行和国行哪个好)

    华为国行与非国行区别(华为非国行和国行哪个好)

  • 微信健康码是黑色的吗(微信健康码是黑色)

    微信健康码是黑色的吗(微信健康码是黑色)

  • 公众号一天怎么群发2次(公众号一天怎么发多条)

    公众号一天怎么群发2次(公众号一天怎么发多条)

  • 变频器一启动一会会停(变频器启动一会就停止)

    变频器一启动一会会停(变频器启动一会就停止)

  • 电脑图标变大了怎么办(电脑图标变大了怎么恢复正常)

    电脑图标变大了怎么办(电脑图标变大了怎么恢复正常)

  • 计算机中数据的表示形式是几进制(计算机中数据的最小单位)

    计算机中数据的表示形式是几进制(计算机中数据的最小单位)

  • ipad mini2是苹果6吗(ipadmini2和苹果6)

    ipad mini2是苹果6吗(ipadmini2和苹果6)

  • 戴尔电脑pin码是什么(戴尔电脑pin码是多少位)

    戴尔电脑pin码是什么(戴尔电脑pin码是多少位)

  • iqoopro怎么备份手机数据(iqoo手机怎么备份所有数据)

    iqoopro怎么备份手机数据(iqoo手机怎么备份所有数据)

  • iphone能不能设置Siri性别(iphone能不能设置动态壁纸)

    iphone能不能设置Siri性别(iphone能不能设置动态壁纸)

  • vivoz5x支不支持无线充电(vivoz5x支不支持5g)

    vivoz5x支不支持无线充电(vivoz5x支不支持5g)

  • 金溢etc怎么连接蓝牙(金溢etc安装方法图解)

    金溢etc怎么连接蓝牙(金溢etc安装方法图解)

  • 华为尺子功能在哪里(华为手机尺子功能在哪打开)

    华为尺子功能在哪里(华为手机尺子功能在哪打开)

  • 怎么解决快手视频模糊(怎么解决快手视频卡顿)

    怎么解决快手视频模糊(怎么解决快手视频卡顿)

  • 抖音共同关系是什么(抖音上共同关注和共同好友有什么区别)

    抖音共同关系是什么(抖音上共同关注和共同好友有什么区别)

  • UEFI怎么装Win7系统?uefi安装win7系统图解(uefi系统安装win7gho)

    UEFI怎么装Win7系统?uefi安装win7系统图解(uefi系统安装win7gho)

  • 织梦调用文章属性的名称(调用自定义属性名称)(织梦怎么采集文章)

    织梦调用文章属性的名称(调用自定义属性名称)(织梦怎么采集文章)

  • 织梦模板建站dedeCMS系统的备份和还原的教程(如何用织梦搭建网站)

    织梦模板建站dedeCMS系统的备份和还原的教程(如何用织梦搭建网站)

  • 工会账怎么做
  • 进口增值税完税证明
  • 营改增后纳税人可以使用的发票种类有
  • 食品类发票明细有哪些面包方便面
  • 在电子税务里怎么查以前年度亏损数据
  • 房地产开发企业预收款预缴增值税
  • 采购设备包含安装费用吗
  • 车辆购置税计税依据包括消费税吗
  • 固定资产投资转化为gdp比例
  • 转出上年的进项税额怎么做分录
  • 预收账款年底要确认收入吗
  • 提取公积金收费比例
  • 银行每年存款任务
  • 公司购买汽车保险车船税需要另计吗
  • 退货或者销毁处理
  • 营改增后取得土地转让
  • 印花税销售收入按50%计算征收
  • 建筑行业暂估成本的会计分录怎么写
  • 异地 发票
  • 金蝶k3固定资产反结账
  • 酒店水电费分录
  • 属于外来凭证的单据是
  • 职工薪酬核算的内容
  • 海关进口增值税专用缴款书
  • php如何实现字符串反转
  • 生产企业结账流程
  • 发票未到先付款的账务处理
  • 分公司与总公司的关系
  • 债券的回购
  • 金融机构贷款利息规定
  • 应交税金 应交税费
  • 混凝土简易计税能抵扣么
  • uniapp动态设置标题
  • unity怎么打包unitypackage
  • vue国际化占位符
  • 购物卡怎么开发票比较好
  • 汽油增值税专用发票几个点
  • 实发工资知道如何发放吗
  • 税务局开普票需要什么材料
  • 仓库出入库账本怎么做
  • 发票丢失一张罚款标准
  • 有关预收款的说法
  • 生产成本月末有余额资产负债表平衡吗
  • 交易性金融资产入账价值怎么计算
  • 售后回租的实质
  • 代开发票取得的收入如何入账?
  • 子公司与母公司承担连带责任
  • 工程维修款扣多少
  • 待认证进项发票哪里导出来数据
  • 新增社保需要工资表和记账凭证吗
  • 固定成本总额包含折旧吗
  • mysql5.7.
  • mysql 厂家
  • 安装sql2000sp4提示挂起
  • 迅速修复系统漏洞的方法
  • win10屏幕自动变黄
  • freebsd12安装图形界面
  • unsecapp.exe - unsecapp是什么进程
  • OS X 10.12.6 beta 1如何更新 OS X 10.12.6 beta 1如何升级
  • mac键盘进水后会报废吗
  • mac os xv10.11
  • Qoeloader.exe - Qoeloader是什么进程 有什么用
  • win8 网络连接
  • win10查看驱动
  • extjs form textfield的隐藏方法
  • linux虚拟机安装windows
  • 安卓开发解析xml
  • vue.js作用
  • div遮罩层整个页面
  • android dsl动态化
  • Android: netd中DnsProxyListener的简单介绍
  • Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社
  • jquery自带的弹出框
  • Python的collections模块中的OrderedDict有序字典
  • 税务局举报管理办法
  • 云南省国家税务局
  • 退车辆购置税流程怎么操作
  • 增值税检查调整的账务处理
  • 大同地税局地址
  • 河南三门峡税务社保缴费电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设