Skip to content

派发通知

  • 派发通知发生在数据更新阶段 用 proxy 劫持了数据对象 所以当响应式对象的属性值更新的时候 会执行 set 函数
  • set 函数是执行 createSetter 函数的返回值

set

  • set 函数 通过 Reflect.set 求值
  • 通过 trigger 函数派发通知
  • 并依据 key 是否存在与 target 上来确认通知类型 新增还是修改
  • 最核心部分就是 执行 trigger 函数派发通知

trigger

  • 主要做了 4件事
    • 从 targetMap 中获取 target 对应的依赖集合 depsMap
    • 创建运行的 effects 集合
    • 根据 key 从 depsMap 中找到对应的 effects 添加到 effects 集合中
    • 遍历 effects 执行相关的副作用函数
  • 因此每次一执行 trigger 函数 就是根据 target 和 key 从 targetMap 中找到所有相关的副作用函数 并遍历执行一次

effect

  • effect 内部通过执行 createReactiveEffect 函数创建一个新的 effect 函数 可以叫做 reactiveEffect 函数 并且给它添加一些新的属性
  • effect 函数支持传入一个配置参数 以支持更多的功能

reactiveEffect 副作用函数

  • reactiveEffect 函数就是响应式的副作用函数 当执行 trigger 过程派发通知的时候 执行 effect 的时候就是 reactiveEffect
  • 只做了两件事
    • 让全局的 reactiveEffect 指向本身
    • 执行被包装的原始函数 fn

Welcome to the site