ref、reactive、toRef、toRefs使用与区别
reactive
- 传参:
reactive(arg),
arg
只能是对象- arg为普通对象
- 返回响应式对象,不管层级多深,都能响应
- 使用:获取数据值的时候直接获取,不需要加.value
- 特点:解构、扩展运算符会失去响应式($1)
- 传参:
ref
- 传参:
ref(arg)
- arg为任意类型,推荐基本类型使用
- 参数可以传递任意数据类型,传递对象类型时也能保持深度响应式,所以适用性更广
- 使用:获取数据值的时候需要加.value。
- vue 3.0 setup里定义数据时推荐优先使用ref,方便逻辑拆分和业务解耦。
- 传参:
toRef
针对reactive中$1的问题,创建了toRef。toRef 用于为源响应式对象上的属性新建一个ref,从而保持对其源对象属性的响应式连接。
传参:
toRef(arg1, arg2)
- 参数1:arg1 - reactive响应式对象
- 参数2:arg2 - 该响应对象中的某个属性。
- 返回:一个ref数据可以针对reactive创建的响应式对象中的某个属性创建一个ref,且两个之间保持引用关系。
也就是说用一个对象的某个属性,可以通过两个方式来改变,结果是一致的,都反应到了该响应式对象上来。
toRefs
- 从名字上可以看出跟toRef是相似的,其实确实也是相似的
- 区别
- toRef是将reactive中的某个属性转为ref
- toRefs是一次性将reactive中的所有属性都转为ref
- 传参:
toRefs(arg1)
- 只接受一个参数,为reactive响应式对象
- 对于reactive中存在的$1问题,toRefs返回的响应式对象可以进行解构、扩展运算符等操作,而不会失去响应式。
- 使用:获取数据值的时候需要加.value
- 特点:toRefs后的ref数据如果是复杂类型数据时,不是原始数据的拷贝,而是引用,改变结果数据的值也会同时改变原始数据
五、结语
尽量不要混着用,reactive 和 ref 选一种,toRef 和 toRefs 选一种,不然代码会很乱。
推荐 ref 和 toRefs 一把梭。
ref、reactive、toRef、toRefs使用与区别的更多相关文章
- Vue3全家桶升级指南二ref、toRef、toRefs的区别
ref是对原始数据的拷贝,当修改ref数据时,模板中的视图会发生改变,但是原始数据并不会改变. toRef是对原始数据的引用,修改toRef数据时,原始数据也会发生改变,但是视图并不会更新. 在vue ...
- 方法的形参、ref参数、out参数的区别
我们在定义方法时,经常会涉及到传参.因为引用类型的数据在用变量存储时,是存储的地址,所以在传参时,依然是传递的地址,但是值类型的数据在传参时就会有所不同.值类型数据在调用方法传参时,普通情况下是值传递 ...
- ref和out的用法和区别。
关于ref和out的用法和区别在网上已经有很多的解释,这里只不过是写下对于我而说比较容易理解的解释. ref和out都可以用来在函数中返回数据,类似于c++中指针. 参数 Ref Out 是否一定需要 ...
- Vue3响应式系统api 之 ref reactive
reactive 接收一个普通对象然后返回该普调对象的响应式代理.等同于2.x的 Vue.observable() Vue3中响应数据核心是 reactive , reactive 中的实现是由 P ...
- ref和out的使用与区别
out的使用 ————————————————————————————————————————————————— class Program { static void Main( ...
- ref和out的使用与区别【转】
http://www.cnblogs.com/sjrhero/articles/1922902.html out的使用 ———————————————————————————————————————— ...
- ref 和 out 的用法和区别以及params用法
方法参数可以划分为一下四种类型1 值参数:声明时不含任何修饰符2 引用参数:以ref修饰符声明3 输出参数:以out修饰符声明4 参数数组:以params修饰符声明 引用参数和输出参数不创建新的存储位 ...
- C#:ref关键字和out关键字的区别
1.在不使用关键字(比如ref关键字.out关键字等)修饰函数的情况下,大部分函数的参数是以值传递的方式,也就是说,“调用函数”在使用参数(比如myNumber)时,是把该参数复制多一份,然后将其传递 ...
- property中ref、value、name的区别
转载: 版权声明:本文为CSDN博主「qq_36098284」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net ...
- C#中ref和out的使用与区别
C#中ref关键字和out关键字所实现的功能差不多,都是指定一个形参按照引用传递而不是实参的副本传递.但是二者适用场景还是有些区别的:out适合用在需要retrun多个返回值的地方,而ref则适合用在 ...
随机推荐
- Smart200 设计注意设计
2023.02.19 1.固件 2.一套西门子不够,输入输出点数不能满足要求,可配置两套(或多套)smart200,通讯实现一整套功能. 3.中大型PLC项目点数:32.16点位CPU:小型PLC项目 ...
- [学习计划]mysql常用语句-随学随整理
<> 不等于 三元表达式 select *, if (num=1, "第一", "其他") as 别名 from 表 COUNT 统计总数并按某 ...
- oracle的dblink创建连接查询及使用
https://www.cnblogs.com/muhai/p/15527463.html https://www.cnblogs.com/leipei2352/archive/2011/04/21/ ...
- LAN8720 调试笔记
因为项目需要开始研究LAN8720,还没有仔细研究芯片手册就根据网上能找到的原理图画了第一版电路 调试整整花了我2天半,期间多亏硬汉哥的耐心解答.下面是我调试过程中遇到的一些坑 1.TPTX.TO ...
- [人脸识别]06-JPG人脸检测
1-程序 #导入CV模块 import cv2 as cv def face_detect_fun(): gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY) print(c ...
- ubuntu测网速speedometer
下载安装speedometer sudo apt-get install speedometer 查询需要测速的网卡 ifconfig 测速 speedometer -rx enp2s0 执行效果图如 ...
- ssh登录、scp传送文件
一.ssh 1.远程登陆服务器 ssh user@hostname user: 用户名hostname: IP地址或域名 第一次登录时会提示:The authenticity of host '123 ...
- pj_time_swap
#!/usr/bin/python# -*- coding: UTF-8 -*- import timeimport refrom datetime import datetime, timezone ...
- sql语句查询优化
SQL 性能优化 explain 中的 type:至少要达到 range 级别,要求是 ref 级别,如果可以是 consts 最好. consts:单表中最多只有一个匹配行(主键或者唯一索引),在优 ...
- EMQX Cloud Serverless 正式上线:三秒部署、按量计费的 MQTT Serverless 云服务
近日,全球领先的开源物联网数据基础设施软件供应商 EMQ 正式发布了 MQTT Serverless 云服务 -- EMQX Cloud Serverless 的 Beta 版本,开创性地采用弹性多租 ...