当前位置: 首页 > Web前端 > vue.js

Vue3中的ref和toRef

时间:2023-04-01 01:34:48 vue.js

我们在使用vue3中的compositionapi的时候,当我们把一个数据转为响应式数据的时候,我们可能经常会用到refapi,其实还有一个toRef,这个api也可以做一个数据反应灵敏。但两者之间也存在一些差异。ref的用法:constnameRef=ref('lisa')toRef的用法:constobj={name:'lisa'}constnameRef=toRef(obj,'name')你会发现toRef需要传入两个参数,一种是目标对象,一个对象中的属性名,它的返回结果是属性名的响应数据。是不是觉得toRef的使用比ref麻烦很多,而且两者使用的目的是一样的,所以这个toRef的存在并不是很有必要。但是ref的原理是复制插入的数据,也就是说nameRef.value改变了,插入的数据不会改变。而toRef不是复制操作,而是对它的引用,所以当你改变nameRef.value的值时,插入的数据也会随之改变。两者还有一个区别,就是toRef的值改变了,但是UI界面不会重新渲染。反之,如果改变ref的值,UI界面会重新渲染。总结一下:1、如果ref返回的值改变了,原值不会改变;如果toRef返回的值发生变化,则原始值也会发生变化。2、如果ref返回的值发生变化,UI界面会重新渲染;如果toRef返回的值发生变化,则不会重新渲染UI界面。