Halo
发布于 2023-03-15 / 103 阅读 / 0 评论 / 0 点赞

vue 中reactive 相关简介

Proxy

const obj = new Proxy(target, handler);
Vue3 将使用 ES6的Proxy 作为其观察者机制,取代之前使用的Object.defineProperty

  • target: 被代理对象。
  • handler: 是一个对象,声明了代理target的一些操作。
  • obj: 是被代理完成之后返回的对象。

reactive 原理

  • 将传入的数据包装成一个Proxy对象
  • 当被get 的时候, 触发依赖收集, 最后effect / update
  • 当被set 的时候, 绑定更新函数, 通知各个组件更新, 最后 最后effect / update

ref和reactive的区别

  • ref(0) --> reactive( { value:0 })
  • ref的参数一般是基本数据类型
  • 在模板中访问ref中的数据,系统会自动帮我们添加.value,在JS中访问ref中的数据,需要手动添加.value

toRef

  • 创建一个 ref 对象,其 value 值指向另一个对象中的某个属性

toRefs

  • 创建多个 ref 对象,每个 value 值指向另一个对象中的相应属性

toRaw

  • 从reactive 得到原始数据, 这样改变raw 数据的时候, ui组件不会发生变化

评论