0%

ref函数

ref函数:

作用:定义一个响应式函数

语法:const xxx=ref(initValue)

创建一个包含响应式数据的引用对象(reference对象,简称ref对象)

JS中操作数据:xxx.value

模板中读取数据,不需要.value,直接

Ps:

接收的数据类型可以是:基本类型也可以是对象类型

基本类型的数据:响应式依然是靠Object.defineProperty()的get与set完成

对象基本类型的数据:内部是求助了Vue3中的一个新函数——reactive函数

ref与reactive对比:

定义数据角度:

ref用来定义:基本类型数据

reactive用来定义:对象(或数组类型数据)

PS:ref也可以用来定义对象(或数组)类型数据,它内部会自动通过reactive转为代理对象

从原理角度对比:

ref通过Object.defineProperty()的getter和setter来实现响应式(数据劫持)

reactive通过使用Proxy来实现响应式,并通过Reflect操作源对象内部的数据

使用角度对比:

ref定义的数据,操作数据需要通过.value,读取数据时模板直接读取不需要.value

reactive定义的数据操作数据与读取数据均不需要.value

响应式数据的判断

isRef:检查一个值是否为一个ref对象

isReactive:检查一个对象是否由reactive创建的响应式代理

isReadonly:检查一个对象是否由readonly创建的只读代理

isProxy:检查一个对象是否由reactive或者readonly方法创建的代理