@feng3d/reactivity
    Preparing search index...

    Class ComputedReactivity<T>

    计算反应式节点类。

    当使用 computed 函数时,会创建一个 ComputedReactivity 对象。 实现了计算属性的核心功能:

    1. 缓存计算结果
    2. 按需重新计算
    3. 依赖追踪
    4. 变更通知

    Type Parameters

    • T = any

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    __v_isRef: true

    标识这是一个 ref 对象。

    _func: (oldValue?: T) => T

    计算函数。

    用于计算属性值的函数,可以访问其他响应式数据。 当依赖发生变化时,会重新执行此函数。

    "[ComputedSymbol]": true
    activeReactivity: ComputedReactivity

    当前正在执行的反应式节点。

    用于在依赖收集过程中标识当前正在执行的节点。 当其他节点访问此节点的值时,会将其作为父节点。

    Accessors

    • get value(): T

      获取计算属性的值。

      取值时会:

      1. 检查是否需要重新计算
      2. 建立与父节点的依赖关系
      3. 返回当前值

      Returns T

    Methods

    • 检查子节点是否发生变化。

      遍历所有子节点,检查它们的值是否发生变化。 如果发生变化,返回 true,否则返回 false。

      在检查过程中会:

      1. 临时禁用依赖跟踪
      2. 检查每个子节点的值
      3. 如果子节点没有变化,重新建立依赖关系
      4. 清空子节点集合

      Returns boolean

      是否有子节点发生变化

    • 执行计算。

      执行计算函数,更新当前值。 在计算过程中会:

      1. 强制启用依赖跟踪
      2. 保存并设置当前活动节点
      3. 执行计算函数
      4. 恢复活动节点

      Returns void

    • 检查并执行计算。

      检查当前节点是否需要重新计算:

      1. 如果脏标记为 true,需要重新计算
      2. 如果子节点发生变化,需要重新计算

      重新计算后会清除脏标记。

      Returns void

    • 建立依赖关系。

      当其他节点访问当前节点的值时,会调用此方法。 将当前节点与访问者(父节点)建立依赖关系。

      如果当前没有活动的响应式节点,或者不应该跟踪依赖,则不会建立依赖关系。

      Returns void

    • 触发更新。

      当依赖发生变化时,会调用此方法。 如果当前正在执行计算,会将更新延迟到计算完成后。 否则,立即通知所有父节点进行更新。

      Returns void