使用vue框架ref, reactive, toRefs, toRef这些方法区分,你的会!

310 阅读2分钟

Vue 响应式的引用的原理,通过proxy对数据进行封装,当数据变化时,触发模板等内容的更新。

一、ref

1、作用:

接受一个内部值并返回响应式且可变的ref对象。ref对象具有指向内部值的单个property. value。

ref需要从Vue中引入才能使用;

ref一般定义基础数据类型;

通过ref包装后需要通过value属性获取,proxy封装后变为proxy({value:值};

模板中使用数据时,会自动的调用value属性,不需要使用value;

1.png

二、reactive

1、作用:

接受一个内部值并返回响应式且可变的对象; 

reactive需要从Vue中引入才能使用;

 reactive一般定义非基础数据类型;

通过reactive包装数据,也就是proxy封装后变为proxy(数据)

2、示例

2.png

3、数据 解构

1)如果解构数据是引用数据类型,解构后仍然是响应式的,参考如下:

3.png

解构后的title值也是用proxy包装的

4.png

所以reactive也会将引用类型值进行proxy包装,这样解构后仍然是响应式的。

1)如果解构数据的值是基本数据类型,那么解构之后再返回不具备响应式,如下:

5.png

这时候就可以通过toRefs来包装。

三、toRefs

1、toRefs原理:{title:’hello’} 通过reactive包装后会变为proxy({title:’hello’}) ,再次通过toRefs包装后会变为proxy({title:proxy({value:’hello’})})

2、示例:

6.png

上面截图中toRefs在改变数据之后使用,如果toRefs在改变数据前使用,那么就需要通过value属性获取,因为proxy封装的时候变为了value.

7.png

toRefs封装,如果响应式数据中本身不存在某个数据,那么不会给一个默认的引用,而是给一个undefined,不具备响应式,参考如下:

8.png

如果想给一个默认引用,可以使用toRef方法。

四、toRef

1、原理:toRef方法不需要解构,两个参数,一个总数据,一个获取的数据,这样2s后页面中由没有数据变成‘walk’

2、示例:

9.png

10.png

结束啦。

今日寄语:

只要你勇敢地说出再见,生活一定会赐予你一个新的开始。