位置: 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如何取消个性名片(qq如何取消个性装扮)

    qq如何取消个性名片(qq如何取消个性装扮)

  • 小米mix3慢动作在哪里(小米mix3慢动作摄影怎么拍摄)

    小米mix3慢动作在哪里(小米mix3慢动作摄影怎么拍摄)

  • iphonex左上角白色圆点(苹果手机左上角出现白色)

    iphonex左上角白色圆点(苹果手机左上角出现白色)

  • 斗鱼直播需要什么设备(斗鱼直播需要什么条件才能开)

    斗鱼直播需要什么设备(斗鱼直播需要什么条件才能开)

  • 基带传输通常采用的复用方式是(基带传输适用于什么场合)

    基带传输通常采用的复用方式是(基带传输适用于什么场合)

  • 苹果手机天气为什么显示不出来(苹果手机天气为什么是北京)

    苹果手机天气为什么显示不出来(苹果手机天气为什么是北京)

  • 允许应用发送常驻通知是什么意思(允许应用发出通知)

    允许应用发送常驻通知是什么意思(允许应用发出通知)

  • 网络显示拒绝接入是什么意思(网络显示拒绝接入网络)

    网络显示拒绝接入是什么意思(网络显示拒绝接入网络)

  • 偏振镜和减光镜区别(偏振镜和减光镜哪个使用频率高)

    偏振镜和减光镜区别(偏振镜和减光镜哪个使用频率高)

  • 苹果care是什么意思啊(苹果那个care是什么)

    苹果care是什么意思啊(苹果那个care是什么)

  • 探探里的闪聊是什么(探探闪聊收费吗)

    探探里的闪聊是什么(探探闪聊收费吗)

  • 荣耀所有型号(荣耀所有型号详解)

    荣耀所有型号(荣耀所有型号详解)

  • iphone11无法连接appstore(iPhone11无法连接5Gwifi)

    iphone11无法连接appstore(iPhone11无法连接5Gwifi)

  • oracle是不是应用软件(oracle属于什么软件类型)

    oracle是不是应用软件(oracle属于什么软件类型)

  • 抖音关注的人在直播为什么上面显示不出来(抖音关注的人在关注里刷不到)

    抖音关注的人在直播为什么上面显示不出来(抖音关注的人在关注里刷不到)

  • 数据库管理系统是一种什么软件(数据库管理系统中负责查询操作的数据库语言)

    数据库管理系统是一种什么软件(数据库管理系统中负责查询操作的数据库语言)

  • 手机qq怎样分组(手机qq怎样分组管理好友)

    手机qq怎样分组(手机qq怎样分组管理好友)

  • 苹果11怎么信任开发者设置(苹果11怎么信任未受信任的应用)

    苹果11怎么信任开发者设置(苹果11怎么信任未受信任的应用)

  • 抖音测年龄道具是哪个(抖音测年龄道具怎么弄)

    抖音测年龄道具是哪个(抖音测年龄道具怎么弄)

  • wps么不能分享文件了(wps怎么无法分享文档)

    wps么不能分享文件了(wps怎么无法分享文档)

  • 手机漏液怎么防止扩大(手机漏液怎么防止烧主板)

    手机漏液怎么防止扩大(手机漏液怎么防止烧主板)

  • 索尼a7r2上市时间(索尼a7r2什么时候出的)

    索尼a7r2上市时间(索尼a7r2什么时候出的)

  • oppoa3耳机模式在哪里(oppo手机耳机模式在哪里设置方法)

    oppoa3耳机模式在哪里(oppo手机耳机模式在哪里设置方法)

  • 个税手续费返还会计分录
  • 跨年租赁费如何处理
  • 罚款可以直接在公安局缴纳吗
  • 培训机构开发票不能开公司抬头吗
  • 小规模纳税人的增值税账务处理
  • 小企业会计准则会计科目表
  • 建筑工程劳保费返还给项目部吗
  • 建筑安装企业增值税税负
  • 客户往来对账单
  • 商城退换货
  • 工伤保险费发票
  • 农副产品收购发票申请
  • 营改增后中小企业的税收发生的变化
  • 兼营非应税劳务行为举例
  • 差额征税的差额怎么算
  • 企业不重视引起的四大涉税风险
  • 一般纳税人是什么等级
  • 餐饮装修费用计入什么科目
  • 租赁收入账务处理
  • 公司用窗帘用什么颜色
  • 固定资产的残值怎么算出来的
  • 退休返聘人员的劳动权益保护
  • 关联公司代付款
  • win10如何查看显卡版本
  • 碎片化对应什么
  • 银行结算账户的种类
  • 汇算清缴哪些表必填
  • 库存现金清查主要包括哪些内容
  • 买支票需要带什么章
  • 买货没发票如何入账
  • 预收账款可以挂账多久
  • php 定时执行文件脚本
  • vue 移动端
  • 瑞士伯尔尼小镇
  • php gd gd2
  • 医疗知识科普图片
  • 固定资产有何特征?
  • auto.js 教程
  • phpcms v9用户手册
  • 代收代付业务需要开发票吗
  • 中华人民共和国禁毒法第十三条规定
  • 居民企业和非居民企业如何判定?
  • 刘亦菲生日当天发素颜照
  • 分类信息有哪些网站
  • 免税黄金什么意思
  • java实现打印
  • mysql怎么替换某个值
  • 个人所得税如何纳税
  • 什么叫金税四期呢?
  • 会计账簿登记错误
  • 广告设计合同属于什么合同
  • 外经证过期了怎样核销
  • 远期支票可以背书转让吗
  • 车辆保险费计入现金流量表哪里
  • 应交所得税科目期末是不是应该没有余额
  • 增发股票会计科目
  • 帮客户支付的机票计入什么科目
  • 非营利医疗机构由谁批准
  • sql语句的执行方式
  • sql语句提取字符串中数字
  • 如何查看solaris版本
  • w8远程桌面连接
  • 文件选项夹在哪里
  • 应用商店如何更新软件
  • XP下HTTP的403.9错误-禁止访问:连接的用户过多 重启iis可以解决
  • win10关闭defender方法
  • linux系统主要用途
  • 十个常用linux脚本命令
  • windows8应用商店在哪
  • linux 压缩rar
  • w10文件预览
  • 飞完整版歌曲
  • Cocos2dx 3.0 lambda表达式的使用
  • androidstudio手机编程软件
  • unity 3d教程
  • python有没有二维数组
  • jquery实例
  • 拉萨税务局拉巴卓玛
  • 阁楼交取暖费吗合法吗
  • 手表关税税率一般是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设