MDRY

导航

vue——vue3中ref和reactive函数

一.ref函数

  • 作用:定义一个响应式数据
  • 语法:const xxx = ref(initValue)
    • 创建一个包含响应式数据的引用对象(reference对象,简称ref对象)

 

    • JS中操作数据: xxx.value

  

    • 模板中读取数据: 不需要.value,直接:<div>{{xxx}}</div>

   

    • 返回对象  

      

  • 备注:
    •   接收的数据可以是:基本类型、也可以是对象类型。

    •   基本类型的数据:响应式依然是靠Object.defineProperty()getset完成的。

    •   对象类型的数据:内部 “ 求助 ”了Vue3.0中的一个新函数—— reactive函数

二.reactive函数

  • 作用: 定义一个对象类型的响应式数据(基本类型不要用它,要用ref函数)
  • 语法:const 代理对象= reactive(源对象)接收一个对象(或数组),返回一个代理对象(Proxy的实例对象,简称proxy对象)

  • reactive定义的响应式数据是“深层次的”。(比如上面代码中的c:666,也可以响应到)

  • 内部基于 ES6 的 Proxy 实现,通过代理对象操作源对象内部数据进行操作。

 三.ref 和 reactive函数的对比:

ref 函数用来定义: 基本数据类型,也可以定义对象(数组) 类型数据,但会自动转换为代理对象

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

ref 函数通过Object.definedPropery() 的get() 和 set() 方法实现的数据响应式。

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

ref 函数定义的数据: 操作数据需要.value 读取模板的时候直接读取不需要.value
reactive: 定义数据: 操作数据与读取数据: 均不要.value

 

posted on 2022-09-03 13:32  小懵丹儿  阅读(175)  评论(0编辑  收藏  举报