ref函数和Reactive的区别

266 阅读1分钟

--- theme: juejin highlight: an-old-hope

vue3.0的ref响应式和Reactive的区别:

ref函数

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

  • ref接收的数据类型:基础数据类型,对象数据类型(注意:ref处理对象类型数据是求助与Reactive的;但是只能响应对象类型的最外层数据,不会深度递归)

  • ref的内部是使用object.defineProperty的get和set来获取数据劫持的,

  • ref处理过的数据必须使用.value才能获取到,而在模板中使用则不需要.value

Reactive函数

  • 作用:定义一个对象类型的响应式数据,

  • Reactive接收的参数类型:对象类型(数组类型),返回一个Proxy对象

  • 语法:

     const person(代理对象) = Reactive(initObject被代理对象)
  • Reactive内部是使用ES6中的proxy来实现响应式的;

  • Reactive会深度递归监听对象的每一层,然后把每一层都会被包装成Proxy对象