一、Vue Ref 基本使用
ref() 接收参数,并将其包裹在一个带有 .value 属性的 ref 对象中返回:
二、Vue Reactive 的局限性
三、Vue Ref 实现原理
Vue Ref 是通过定义对象的属性访问器,即 getter 和 setter 方法来拦截对象属性的 get 和 set 操作,实现依赖追踪和更新
查看 Vue 3.4 源码 (packages/reactivity/src/ref.ts):
get 操作的核心方法 trackRefValue 实现依赖追踪,set 操作的核心方法 triggerRefValue 实现触发更新
trackRefValue → trackEffect,可以发现收集依赖最终使用的 trackEffect 方法和 Vue Reactive 一样,说明该 effect 类是响应式的核心:
triggerRefValue → triggerEffects,可以发现依赖更新最终使用的 triggerEffects 方法和 Vue Reactive 一样,同上:
trackEffect 和 triggerEffects 使用的 effect 类 → ReactiveEffect (packages/reactivity/src/effect.ts) 具体实现如下(只显示核心部分):
deps 属性:存储依赖
run 方法:运行的核心方法
四、其他
学习的记录,仅供参考