咱们在应用vue3当中的composition api时,咱们将一个数据变成可响应式的数据时,咱们可能常常用的ref这个api,其实还存在一个toRef,这个api也能够将一个数据变成可响应式的。然而两者也存在着一些不同之处。

ref的用法:

const nameRef = ref('lisa')

toRef的用法:

const obj = { name: 'lisa' }const nameRef = 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界面不会进行从新渲染。