ref、reactive、toRef、toRefs使用与区别
2024-10-20 04:38:32
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,且两个之间保持引用关系。
也就是说用一个对象的某个属性,可以通过两个方式来改变,结果是一致的,都反应到了该响应式对象上来。
使用:1、获取数据值的时候需要加.value。2、场景:使用父组件传递的props数据时,要引用props的某个属性且要保持响应式连接时就很有用。
特点:、toRef后的ref数据如果是复杂类型数据时,不是原始数据的拷贝,而是引用,改变结果数据的值也会同时改变原始数据。
toRefs
- 从名字上可以看出跟toRef是相似的,其实确实也是相似的
- 区别
- toRef是将reactive中的某个属性转为ref
- toRefs是一次性将reactive中的所有属性都转为ref
- 传参:
toRefs(arg1)
- 只接受一个参数,为reactive响应式对象
- 对于reactive中存在的$1问题,toRefs返回的响应式对象可以进行解构、扩展运算符等操作,而不会失去响应式。
- 使用:获取数据值的时候需要加.value
- 特点:toRefs后的ref数据如果是复杂类型数据时,不是原始数据的拷贝,而是引用,改变结果数据的值也会同时改变原始数据
五、结语
尽量不要混着用,reactive 和 ref 选一种,toRef 和 toRefs 选一种,不然代码会很乱。
推荐 ref 和 toRefs 一把梭。
最新文章
- 预览github上的html页面
- c语言中static的用法,包括全局变量和局部变量用static修饰
- IE9中Media queries在iframe无效的解决方法
- sublime text编辑器删除已安装的插件
- Codeforces Round #325 (Div. 2) D. Phillip and Trains BFS
- 《Python基础篇》之初识Python一
- 进程、线程、轻量级进程、协程和go中的Goroutine
- [每日一题] 11gOCP 1z0-052 :2013-08-30 差异的增量备份.....................................................A1
- Swift - 给表格添加编辑功能(删除,插入)
- 在Ubuntu上安装PHPStudy组件
- 一条SQL语句执行得很慢的原因有哪些?(转)
- sumafan:python爬虫多线程爬取数据小练习(附答案)
- 手动卸载CAD 删除残留文件 清理遗留的文件
- [海外干货] BlackHat 2017 首日议题的所有 PPT以及材料
- python-工厂方法模式
- django之创建第7-5-第二种传值方式(time/1232/xiaodneg)
- (转载)javascript将base64编码的图片数据转换为file并提交
- ASP.NET 实现多页面合并一页显示
- ThinkPHP快速实现数据分页(前端/后端分离)
- UVA 10012 How Big Is It?(暴力枚举)