【Vue3】toRefs和toRef在reactive中的一些应用

Vue3 理解 toRef 和 toRefs 的作用、用法、区别 Vue3 轻松理解 toRef 和 toRefs 的作用、用法、区别,并举例一些简单案例。 阅读详情

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互相学习和建立一个积极的社区。谢谢你的光临,让我们一起踏上这个知识之旅!
请添加图片描述

🍀回顾响应式对象

在介绍知识点之前,我们准备好初始代码

<template>
<h2>姓名:{{ person.name }}</h2>
<h2>姓名:{{ person.age }}</h2>
<button @click="change_name">修改名字</button>
<button @click="change_age"></button>
 </template>
 
 <script lang="ts" setup name="Person11">
  import {reactive} from 'vue'
  
 let person = reactive({
  name:'馒头',
  age:22
 })
 function change_name(){
  person.name += '*'
 }

 function change_age(){
  person.age += 1
 }

 </script>
 
 <style scoped>
   .person {
     background-color: skyblue;
     box-shadow: 0 0 10px;
     border-radius: 10px;
     padding: 20px;
   }
   button {
     margin: 0 5px;
   }
 </style>

运行结果如下请添加图片描述

是否和你想的一样呢,我们使用了reactive进行创建响应式对象

接下来我们对person进行解构赋值

或许有些人不太理解解构赋值,我从网上找了一段话

解构赋值是 JavaScript 中一种方便的语法,用于从数组或对象中提取数据并赋值给变量。通过解构赋值,可以轻松地提取数组中的元素或对象中的属性,使代码更简洁易读。它还可以嵌套使用,处理复杂的数据结构,但要注意避免过度解构,以保持代码的可读性。

接下来我们看看代码中如何操作,只需在数据下面加一行

let {name,age} = person

接下来我们修改方法中的部分代码

//原代码
function change_name(){
          person.name += '*'
        }

        function change_age(){
          person.age += 1
        }
//修改之后的代码
function change_name(){
          name += '*'
        }

        function change_age(){
          age += 1
        }

这样我们的页面是否还会响应呢,答案是不可以
请添加图片描述
如果我们再修改模板里面的内容呢

<h2>姓名:{{ name }}</h2>
<h2>姓名:{{ age }}</h2>

答案也是不更新的,但是数据究竟改没改呢,我们打印一下

function change_name(){
          name += '*'
          console.log(name)
        }

        function change_age(){
          age += 1
          console.log(age)
        }

控制台结果显示如下,所以说是改了的
在这里插入图片描述


接下来我们解释一下
let {name,age} = person
上面这行代码和下面两行代码其实是等价的
let name=person.name
let age=person.age
同时我们要明确一点,下图的数据是响应式的
在这里插入图片描述

但是我们解构后相当于自己重新定义了一个对象name和age,然后person.name和person.age是不变的
多说无益,我们测试一下叭

function change_name(){
          name += '*'
          console.log(name, person.name)
        }

在这里插入图片描述
结果显然了叭,结论就是:响应式对象解构出的并非是响应式对象


🍀介绍toRefs

承接上个标题,我们如果想要将解构的对象变为响应式的,我们应该怎么做呢,只需要import一个toRefs

import {reactive,toRefs} from 'vue'

同时我们再将解构的person包裹一下toRefs

let {name,age} = toRefs(person)

这样的意思就是,将解构的数据变为Ref定义的响应式对象,将reactive对象变为Ref对象
接下来我们改一下方法

function change_name(){
          name.value += '*'
          console.log(name, person.name)
        }

        function change_age(){
          age.value += 1
          console.log(age)
        }

这样我们再测试一下
请添加图片描述


🍀介绍toRef(不常用)

toRef和toRefs是 Vue3 中用于处理响应式对象的两个函数,它们有一些重要的区别:

toRef:
    参数:接收一个响应式对象和一个属性名,返回一个 ref 对象,指向该属性的值。
    用途:主要用于将单个属性转换为 ref 对象,使得该属性的值能够被响应式地跟踪。
    示例:

toRefs:

参数:接收一个响应式对象,返回一个包含该对象所有属性的 ref 对象。
用途:常用于在组件中将 props 转换为响应式对象,或者在 setup 函数中处理响应式对象的多个属性。
示例:

总的来说,toRef用于处理单个属性,将其转换为 ref 对象,而toRefs用于处理整个对象,将对象的所有属性都转换为 ref 对象


🍀总结

本节介绍了一下toRefs和toRef,同时回忆了一下reactive

请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

一文讲清楚vue3中ref、reactive、toRef、toRefs、isRef、isReactive、unref、toValue的使用 先看一个组件我们定义了一个count,还有一个修改它的方法,并尝试在模板中通过两种方式去修改它,但结果却是页面没有任何变化。其实通过这些操作我们已经修改了count的值,只是未能得到视图的更新,所以我们看到的还是最初的值,那如何解决呢?这就引出了响应式数据ref()用于创建一个包装基本类型值的响应式对象。它将基本类型值(如数字、字符串等)转换为响应式对象(但其实也可以是引用类型),使其具有响应式特性。ref()返回一个包含value属性的对象,通过这个属性来访问和修改值。是一个响应式对象,通过ref。 阅读详情

相关推荐

Vue3项目创建及reactive与ref、isRef、toRefs、shallowReactive的作用

vue3项目创建、vue3项目搭建流程、vue3里ref使用、vue3里reactive使用。

qq_37635012的博客 954

Vue3 reactive丢失响应式问题

使用 reactive 定义的对象,重新赋值后失去了响应式,改变值视图不会发生变化。

forever__fish的博客 6472

树莓派5首次开机保姆级教程(无显示器通过VNC连接树莓派桌面)

选择 Interface Options > VNC > Yes 启用服务。2.在Windows电脑上安装VNC软件。重启树莓派:sudo reboot。3.使用VNC远程访问树莓派桌面。

qq_34184505的博客 2349

vue3的ref和reactive的用法和解析

vue3的ref和reactive的用法和解析

qq_70703397的博客 5893

Sparse4Dv3

instance_feature也设置为nn.Parameter。修正分支2*(linear->relu->linear->relu->layernorm)->linear->scale,分类分枝2*(linear->relu->layernorm)->linear(256,9),质量评估分枝2*(linear->relu->layernorm)->linear(256,2)。每组两类instance,1是加上范围(-x,x)内均匀分布噪声,2是加上(-2x,-x)U(x,2x)范围内均匀分布噪声。

yuanl15的博客 1351

HUMAnN 3.0 (alpha)安装及使用

文章目录简介安装数据库下载运行参考 简介 安装 conda install humann humann_test (~1 minute) 数据库下载 humann_databases --download chocophlan full /path/to/databases --update-config yes humann_databases --download uniref uniref90_diamond /path/to/databases --update-config yes humann_

dys的博客 9505

vue3的toRef,toRefs,toRaw的使用,以及reactive

上面toRef,toRefs都是对简单结构数据的响应式,而reactive是对复杂的数据进行响应式。如果原始对象是非响应式的就不会更新视图,但数据是会改变的。

晨曦的博客 1201

Foxglove 介绍以及入门使用教程

Foxglove 是由Foxglove 工作室开发的一套工具集,包括和等组件。跨平台支持:可以在 Windows、macOS 和 Linux 上运行。多协议兼容:支持 ROS、ROS 2、CAN 数据以及其他自定义协议。丰富的可视化功能:可以绘制点云、轨迹、激光雷达数据、IMU 数据等。实时与离线模式:既可以实时监控机器人状态,也可以加载和回放记录的数据文件。Foxglove 的 3D 视图允许你以三维方式查看机器人的运动轨迹、传感器数据和其他几何信息。你可以旋转、缩放和平移视图以获得更好的观察角度。

zolty 1万+

vue3基础ref,reactive,toRef ,toRefs 使用和理解

ref:用于基本数据类型的响应式引用,访问和修改需要使用.value。reactive:用于创建响应式对象或数组,直接访问和修改其属性。toRef:将reactive对象的某个属性转换为ref,适用于单个属性。toRefs:将整个reactive对象的属性转换为ref对象,适用于需要解构响应式对象的场景。这些工具在 Vue 3 的响应式系统中互相配合使用,可以帮助你更灵活地管理和使用响应式数据。您好,我是肥晨。欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。

肥晨开发的学习之路 1486

STM32开发 -- LIS3DH三轴加速度计开发详解

这次要讲一下LIS3DH三轴加速度计的开发使用,之前是有讲过 MPU6050开发 的,但当时是在Linux下做的。额,还是个半成品,哈哈。现在手边有STM32的开发板,可以实实在在的来实现以下卡尔曼滤波了。 一、LIS3DH初识 依照惯例,先看一下手册,大致先了解一下,LIS3DH是什么模块。 下载:LIS3DH datasheet 1、描述 LIS3DH是一款超低功耗高性能三轴线性加速度计,属于...

不积跬步,无以至千里 2万+

3、灵巧手的设计与构造

本文详细探讨了灵巧手的设计与构造,包括多指结构、关节和连杆设计、传感器集成以及分层控制架构等内容。同时,通过工业装配、医疗手术辅助和日常生活辅助等实际应用案例,展示了灵巧手的灵活性和适应性,并分析了当前设计面临的挑战及未来发展方向。

brandy的博客 490

vue3中的reactive、ref、toRef和toRefs

详细介绍了vue3中的reactive、ref、toRef和toRefs的使用方法和注意事项

九仞山的专栏 2381

基于 Logistic 混沌映射和 Arnold 变换 的变换域水印改进算法【高级网络与信息安全技术-信息隐藏期末课程论文】

摘要:\textbf{摘要:}摘要:本文提出了一种新的水印算法是一种图像认证的新方法。算法首先使用Logistic混沌映射加密水印图像,然后使用Arnold变换置乱水印。同时改变了水印图像的像素位置和像素值,大大提高了算法的安全性。再使用DCT变换嵌入水印,并且结合人类视觉系统的特点来提升水印嵌入的透明性。实验结果表明,本文提出的水印算法可以大幅度提高水印嵌入的透明性与安全性的同时,并不降低算法的鲁棒性。注:完整的代码和论文在文末,百度网盘链接。

zik的博客 893

vue3中,ref、reactive、toRef、toRefs的区别

vue3中,ref、reactive、toRef、toRefs的区别 相对于Vue2来说,Vue3最大的突破就是 Composition API 。与现有的 Option API 截然不同。他的好处可以总结为两点 更集中的逻辑关注点 更方便的函数逻辑复用机制 1、ref、reactive 可触发页面改变 区别 ref可用于任何类型的数据创建响应式, reactive只用于创建引用类型数据的响应式。 注意 ref对引用类型变量创建响应式,其根本是当你给ref传入引用类型,则调用reactive方法为其创建

weixin_44867717的博客 3334

uniApp微信小程序:利用live-pusher人脸活体检测功能+完整示例代码,uniapp使用live-pusher直播推流组件实现人脸验证-活体检测,检测人脸中的动作包括眨眼、张嘴、左右摇头动作

UniApp 使用 live-pusher 实现人脸活体检测(附完整源码)uniapp开发微信小程序人脸检测活体检测,在uni-app的微信小程序项目中使用live-pusher实现人脸识别,uniapp使用live-pusher实现模拟人脸识别效果,张张嘴、眨眨眼、向左摇头、向右摇头等动作,免费使用人脸活体检测的插件方案,uniapp小程序怎么免费使用人脸活体,直播推流,UNIAPP微信小程序使用live-pusher实现人脸识别(拍照)功能,在uni-app项目中实现人脸识别,既使用uni-app中的l

✅ 精选推荐文章 3013

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

toRef 和 toRefs 详解及应用

toRef 和 toRefs 详解及应用

嗨,欢迎来到我的 优快云 博客小天地!一名深耕多年的技术发烧友。在这里,我将把日常工作中积累的宝贵经验,从复杂架构设计的精妙之处,到代码优化的实战技巧,毫无保留地分享给大家。 5859

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ref、reactive、toRef、toRefs的区别

目录 1.ref 2.reactive 3.toRef 4.toRefs 5.总结 在vue3.0里给数据添加响应式有很多api可用,下面给大家简单说一下: 1.ref ref: 为数据添加响应式状态,返回一个具有响应式状态的副本。 获取数据值的时候需要加.value。(对于基本数据类型,ref是自己的实现方式且性能优于reactive,而对于对象类型,ref可以理解为是通过reactive包装实现的) 参数可以传递任意数据类型,传递对象类型时也能保持深度响应式,所以适用性更广。 ..

weixin_62930485的博客 2655

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ref、reactive、toRef、toRefs

语法:const 代理对象= reactive(源对象)接收一个对象(或数组),返回一个代理对象(Proxy的实例对象,简称proxy对象)应用:常用于es6的解构赋值操作,因为在对一个响应式对象直接解构时解构后的数据将不再有响应式,而使用toRefs可以方便解决这一问题。toRefs后的ref数据不是原始数据的拷贝,而是引用,改变结果数据的值也会同时改变原始数据。toRef后的ref数据不是原始数据的拷贝,而是引用,改变结果数据的值也会同时改变原始数据。reactive定义的响应式数据是“深层次的”

weixin_53954018的博客 629

vue3中ref、reactive、toRef、toRefs的使用

vue3中ref、reactive、toRef、toRefs的使用 文章目录vue3中ref、reactive、toRef、toRefs的使用refreactivetoReftoRefs总结 四个函数都是用于在setup中创造响应式变量的 ref ref可用于任何类型的数据创建响应式,取值需要加.value。对于基本数据类型,ref的性能优于reactive,而对于对象类型,ref仍然是通过reactive包装实现的。推荐优先使用ref,方便逻辑拆分和业务解耦。 <div id="app">

1447

深入理解 Vue 3 中的 ref、reactive、toRef 和 toRefs

refreactivetoRef和toRefs是 Vue 3 中非常重要的响应式数据处理工具。它们各自有其适用的场景,正确地理解和使用它们可以帮助我们更加高效地处理响应式数据,构建出更加灵活和动态的 Vue 应用程序。在实际开发中,我们需要根据具体的需求和数据结构选择合适的方法来创建和处理响应式数据,以确保应用程序的性能和可维护性。

m0_57836225的博客 2770

最简洁的话概述vue3中的ref、reactive、toRef、toRefs

最简洁的话概述vue3的ref、reactive、toRef、toRefs

nieling3的博客 774

Vue3 ref和reactive使用上的区别,toRef与toRefs函数

https://www.cnblogs.com/kousum/p/14399280.html 在vue3中对响应式数据的声明官方给出了ref()和reactive()这两种方式

林中明月间丶 3810

Vue3 语法糖的基本使用总结——ref,reactive,toRef,toRefs,props,emit

Vue3 语法糖的基本使用总结 Vue3使用ref,reactive, Vue3使用toRef,toRefs, Vue3使用props,emit

weixin_51604181的博客 2329

Vue 3响应式系统全解析:深入ref、reactive、computed、watch及watchEffect

Vue 3的响应式系统以ref和reactive为核心,分别用于基本数据和深度响应式对象。computed提供了自动计算的属性,而watch用于监视数据变化。此外,toRef和toRefs从reactive对象中提取ref,增强了数据响应性。这些API共同简化了Vue 3中动态界面的构建和数据管理。

俎树振的博客 3211

vue3组合api 响应式数据 ref toRef toRefs reactive

vue3组合api 响应式数据 ref toRef toRefs reactive ref函数 ref函数,常用于简单数据类型定义为响应式数据 作用: 定义一个响应式的数据 语法: const xxx=ref(initvalue) 创建一个包含响应式数据的引用对象 (refernce对象 简称ref对象) js操作数据 : xxx.value 模板中读取数据: 不需要.value 直接 {{xxx}} 备注 接收的数据可以是基本类型 也可以是对象类型 基本类型的数据 响应式依然是靠Object.de

greed 637

Vue 3 ref 和 reactive 完整指南

这两个 API 是 Vue 3 中非常强大的工具,它们使得响应式编程变得更加简单和直观。它创建了一个新的代理对象,该对象拦截了原始对象的操作,并在读取或修改属性时触发依赖更新。这两个 API 提供了创建和管理响应式数据的新方法。的内部实现基于一个封装了实际值的对象,这个对象实现了。是响应式系统的核心部分,用于收集依赖和触发更新。用于将一个响应式对象中的某个属性转换为。用于标记一个对象使其不再成为响应式的。用于创建一个基本类型的响应式引用。用于创建一个对象类型的响应式引用。用于获取一个响应式对象的原始值。

挨踢星球 1108
上一篇: 【Vue3】使用ref与reactive创建响应式对象
下一篇: 【Vue3】学习computed计算属性
小馒头学python
小馒头学python 优质创作者: python技术领域 优质创作者: python技术领域
博客等级 码龄4年 1万+粉丝 252原创
评论 60
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小馒头学python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值