Ember追踪系统 #

一、追踪系统概述 #

Ember Octane的追踪系统是实现响应式更新的核心机制。

1.1 工作原理 #

text
状态变化 → 追踪系统检测 → 触发更新 → 重新渲染

1.2 核心概念 #

概念 说明
@tracked 标记可追踪属性
getter 自动追踪依赖
autotracking 自动依赖收集

二、@tracked装饰器 #

2.1 基本用法 #

javascript
import { tracked } from '@glimmer/tracking';

class Person {
  @tracked firstName = '';
  @tracked lastName = '';

  get fullName() {
    return `${this.firstName} ${this.lastName}`;
  }
}

2.2 追踪对象 #

javascript
import { tracked } from '@glimmer/tracking';
import { TrackedObject } from 'tracked-built-ins';

class State {
  @tracked user = new TrackedObject({
    name: '',
    email: '',
  });
}

2.3 追踪数组 #

javascript
import { TrackedArray } from 'tracked-built-ins';

class TodoList {
  @tracked items = new TrackedArray([]);

  addItem(item) {
    this.items.push(item);
  }
}

三、自定义追踪 #

3.1 自定义getter #

javascript
import { tracked } from '@glimmer/tracking';

class Counter {
  @tracked _count = 0;

  get count() {
    return this._count;
  }

  set count(value) {
    this._count = value;
  }
}

3.2 计算属性缓存 #

javascript
import { tracked } from '@glimmer/tracking';

class Expensive {
  @tracked data = [];

  get processed() {
    // 只在data变化时重新计算
    return this.data.map(/* 复杂处理 */);
  }
}

四、总结 #

追踪系统要点:

概念 说明
@tracked 标记响应式属性
getter 自动依赖追踪
TrackedObject 追踪对象
TrackedArray 追踪数组

理解追踪系统是掌握Ember响应式的关键。

最后更新:2026-03-28