Vue3 - toRef() 使用教程

news2025/7/19 21:01:16

介绍

它可用于为响应式对象上的 property 创建 ref,这样创建的 ref 与其源 property 保持同步,当改变源 property 时,将更新 ref ,反之亦然。

这段话有些晦涩难懂,其实用大白话说,就是当你使用 reactive 创建响应式对象后,你可以通过 toRef 引用这个响应式对象的某一个属性,无论你修改原响应式数据还是修改 toRef 引用的数据,它们都始终保持响应式。

示例代码

还不理解没关系,我们来写一个小例子看一下。

<template>
  <h2>原响应式对象:{{ obj.name }}</h2>
  <h2>通过toRef引用过来的:{{ uname }}</h2>
  <hr>
  <h2>obj:{{ obj.name }}</h2>
  <h2>uname:{{ uname }}</h2>
</template>

<script>
import { reactive, toRef  } from 'vue'
export default {
  setup() {

     // reactive响应式对象
     const obj = reactive({
       name: '刘华强',
       age: 34
     })

     // 引用其name属性并保持响应(引用)
     const uname = toRef(obj, 'name')

     // 修改原响应式对象
     setTimeout(() => {
        obj.name = '瓜摊老板'
     }, 3000)

     // 修改通过toRef引用的
     setTimeout(() => {
       uname.value = '啊...撒日朗'
     }, 6000)
     
     // return
     return { obj, uname }
  }
}
</script>

在这里插入图片描述
咱们先来看两遍,可以看到,定时器 3 秒后改变原响应式对象 obj 的 name 属性时,其通过 toRef 引过来的 uname 也发生了改变。

相反,定时器 6 秒后改变其通过 toRef 引过来的 uname 时,原响应式对象也同样发生了变化,这足以证明 它们依旧还都是响应式的。

使用场景

这玩意什么时候用呢,就是当你要将响应式对象中的某个属性,单独给外部使用时候。

比如,你有一个这样的响应式对象,在页面上已经展示了数据。

const obj = reactive({
  name: '总收益',
  money: 4999
})

哎过了两天,老板说想把这个总收益展示到其他地方,此刻的你需要将这个总收益 money 字段单独拿出来,放到老板所要展示的地方,对应的代码就是这样的。

const obj = reactive({
  name: '总收益',
  money: 4999
})

// 单独拿出来(在需要的地方使用)
const Money = toRef(obj, 'money')

你看你无需考虑这份总收益 money 数据更新问题,因为一旦 obj 响应式对象更新了,咱们所单独拿出来的也会自动更新,同时呢,当你改变单独拿出来的这份后,obj 响应式对象也会同时更新。

不是很好理解,况且这玩意真实项目开发使用场景也不少。

SEO

Vue3官方文档,vue3.js toRef 官方文档教程,vue3toRef,一文搞懂Vue3中toRef和toRefs函数的使用,vue3-(toRef,toRefs,toRaw),Vue3如何理解ref, toRef和toRefs响应式数据方法,前端- toRaf和ref的区别,深入理解 Vue3 Reactivity API ,Vue3 - toRef() 使用教程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何拆分PDF成单页?这三个方法分享给你

很多朋友在平时的工作中&#xff0c;经常需要处理一些PDF格式的文件&#xff0c;但是如果PDF文件的占用空间太大&#xff0c;难以进行操作处理&#xff0c;这时我们就需要先将其拆分成多个小文件&#xff0c;那你们知道要怎么把PDF拆分成多个文件吗&#xff1f;今天我就来给大家…

RK3568平台开发系列讲解(LCD篇)DRM 显示框架

🚀返回专栏总目录 文章目录 一、DRM 显示框架二、DRM 驱动和 libdrm 交互过程2.1、GEM:2.2、KMS:三、DRM 驱动路径3.1、Uboot驱动路径3.2、内核驱动路径沉淀、分享、成长,让自己和他人都能有所收获!😄 📢DRM 英文名叫 Direct Rendering Manager,用来管理显示输出,图…

App Languages 批量导入管理flutter多语言文案

前段时间AppLanguages推出了iOS、Mac版的多语言文案导入功能&#xff0c;好几个小伙伴点赞&#xff0c;称其为“干货工具”&#xff0c;最近加班加点支持了flutter的多语言文案管理功能。 操作界面 批量导入 1&#xff09;需要选择lib文件夹的路径&#xff0c;方便创建和寻找…

2022年11月华南师范大学自考本科-计算机信息管理课程实验—《数据库系统原理》实践题目

《 计算机信息管理课程实验——数据库系统原理 》课程试卷 答卷提交说明&#xff1a; 在mysql环境下填写SQL命令完成以下实践的题目&#xff0c;并返回执行结果的截图&#xff0c;答卷的答题格式如下&#xff0c;包括三部分&#xff1a;题目&#xff0c;SQL文本代码&#x…

【测试开发面试】6家企业真实面试,最终成功入职外企......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 粉丝小A 测试开发的…

3、HTML——注释、转义字符、超链接标签、锚链接、功能性超链接、列表标签、有序列表、无序列表、定义列表

目录 一、注释标签 二、转义字符 1、空格&#xff1a; 2、大于号/小于号&#xff1a;>/< 3、引号&#xff1a;" 4、版权&#xff1a;© 5、商标&#xff1a;& 6、常见转义字符 三、超链接标签&#xff1a;a 四、锚链接 1、跳转同网页位置 2、…

铁威马NAS如何开启二次验证提高系统安全性

想到登录TNAS时更安全&#xff1f;直接开启OTP二次验证&#xff0c;通过 TNAS mobile生成的一次性密码登录NAS存储&#xff0c;简单设置&#xff0c;提升TOS系统访问安全性给你TNAS双重保护。 1.首先&#xff0c;确认你的TOS系统在5.0.176以上&#xff1b; 2.登录TOS 系统后&…

中国为什么要发展人工智能

“基建狂魔”,这是很多网友对中国的爱称。一方面是知道中国的基础设施建设速度很快,另一方面也是对中国整体实力的信心。疫情时期,武汉方舱医院只用了10多天就完成了建造,震惊世界,也让国人骄傲。 如果只看现在,你可能会觉得中国有这样的速度,是理所当然。但如果你知道最…

FPGA SATA IP控制器的SATA接口调试记录

本文档是基于FPGA K7 SATA IP控制器的SATA接口调试记录&#xff0c;接口遵循标准的ACHI协议。 操作系统内核版本&#xff1a;5.4.18 由于K7PCIE只有3个bar&#xff0c;AHCI协议规定SATA控制器是在第四个BAR上&#xff0c;另外由于PCIE配置空间设备类寄存器和能力寄存器未配置成…

数学之美系列 1.3w字精简版阅读笔记

目录 系列一&#xff1a;统计语言模型 (Statistical Language Models) 系列二&#xff1a;谈谈中文分词 系列三&#xff1a;隐含马尔可夫模型在语言处理中的应用 系列四&#xff1a;怎样度量信息 系列五&#xff1a;布尔代数与搜索引擎的索引 系列六&#xff1a;图论和网…

【深入理解Kotlin协程】协程中的Channel和Flow 协程中的线程安全问题

热数据通道 Channel Channel 实际上就是 个并发安全的队列&#xff0c;它可以用来连接协程&#xff0c;实现不同协程的通信&#xff0c;代码如代码清单所示 suspend fun testChannel() {val channel Channel<Int>() var i 0//生产者 发val producer GlobalScope.lau…

双立方插值原理分析

双立方插值原理分析双立方插值 : 其核心思想是利用三次多项式S(x)求逼近理论上最佳插值函数sin(x)/x&#xff0c;待求像素(x, y)的灰度值由其周围16个灰度值加权内插得到公式推导过程 上述图片中像素点的说明&#xff1a; 红色的点为16个真实存在的像素点 P 为双立方插值待插…

SCD1: 微服务概览

1.1简介 1.1.1 概念 集群&#xff1a; 它是一种物理形态&#xff0c;简单来讲就是把同一个业务部署到多个服务器上。而在接收到请求流量时&#xff0c;主要是通过负载均衡器&#xff0c;来进行流量分配。   分布式&#xff1a; 它是一种工作方式&#xff0c;将一个业务拆成多…

SpringMVC学习篇(三)

转发和重定向 1 保存数据四种方式 1.1 转发范围 1.1.1 Model a 设置值 a.1 语法 Model对象.addAttribute(key,value);a.2 示例 m.addAttribute("a","香蕉");b 有效范围 在转发的当前页面有效1.1.2 ModelMap a 设置值 a.1 语法 ModelMap对象.addAt…

API网关功能一览

API网关功能一览 无论是单体应用&#xff0c;SOA或者现在流行的微服务架构&#xff0c;都需要一个API网关。 API网关作为内网的入口&#xff1b;统一对外提供服务。 一些公共服务的建设&#xff0c;也可以在网关层统一处理。 网关应该是无状态&#xff0c;容易线性扩展的;运行时…

基于Swagger的接口自动化测试

本文是一篇讲述敦煌网云原生微服务与服务接口(API)自动化测试实现的文章。 云原生微服务框架项目升级在如火如荼的进行中&#xff0c;根据磐石框架延伸产生的测试技术&#xff0c;亦是本文主旨所在。 一、Swagger介绍 原始时代&#xff0c;可能在工程开发前夕&#xff0c;会…

XSS进阶一

目录实验目的预备知识实验环境实验步骤一实例一、热身运动&#xff0c;不设防实验步骤二实例二、小写不行&#xff0c;就大写吧实验步骤三实例三、大写小写都不行&#xff0c;看你怎么办&#xff1f;实验目的 1.深入理解xss工作原理。 2.怎么去绕过规则实现xss。 3.培养学生的…

卷积版动作仿真模拟网络

🍿*★,*:.☆欢迎您/$:*.★* 🍿 目录 背景 正文 总结 背景描述

【图像分割】基于差分进化算法优化模糊熵实现多级图像阈值分割附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

猿创征文|2022年前端之路——我的前端开发好帮手

&#x1f4ac;关于「猿创征文 」第四季 | 2022 年我的开发者工具 活动主旨&#xff1a;开发者每天都在使用、寻找、贡献、创作各类开发者工具&#xff0c;包括开源服务、付费软件、API等。好的工具可以极大帮助我们提升效率&#xff0c;服务业务。本期邀请大家创作在2022年有效…