Skip to content

ref 和 reactive 的区别

可监听的原始值不同

  • ref 是通过构建一个对象 RefImp ,然后将值赋给 value,然后通过 Object.defineProperty 的 getter 和 setter 进行监听,如果监听的是一个对象会再次借助 reactive 实现深层监听。
  • reactive 是通过构建 Proxy 实现监听, Proxy 不允许监听原始数据。

对象可变性

ref 是 RefImp 对象而 reactive 是原始对象的代理,这就导致了可以重新分配一个全新的对象给 ref 的 value 属性,而 reactive()不能。

收集依赖

  • ref 是 Ref<T> 类型,可以直接自己通过 dep 收集依赖
  • reactive 是原始对象类型,需要通过键值对收集依赖。

数据侦听不同

watch 默认只观察 ref 的 value,而对 reactive 则执行深度监听。

备案号:闽ICP备2024028309号-1