Lines Matching refs:Trace

1 # \@ObservedV2装饰器和\@Trace装饰器:类属性变化观测
3 为了增强状态管理框架对类对象中属性的观测能力,开发者可以使用\@ObservedV2装饰器和\@Trace装饰器装饰类以及类中的属性。
6 \@ObservedV2和\@Trace提供了对嵌套类对象属性变化直接观测的能力,是状态管理V2中相对核心的能力之一。在阅读本文当前,建议提前阅读:[状态管理概述](./arkts-state-ma…
10 >\@ObservedV2与\@Trace装饰器从API version 12开始支持。
15 \@ObservedV2装饰器与\@Trace装饰器用于装饰类以及类中的属性,使得被装饰的类和属性具有深度观测的能力:
17 - \@ObservedV2装饰器与\@Trace装饰器需要配合使用,单独使用\@ObservedV2装饰器或\@Trace装饰器没有任何作用。
18 - 被\@Trace装饰器装饰的属性property变化时,仅会通知property关联的组件进行刷新。
19 - 在嵌套类中,嵌套类中的属性property被\@Trace装饰且嵌套类被\@ObservedV2装饰时,才具有触发UI刷新的能力。
20 - 在继承类中,父类或子类中的属性property被\@Trace装饰且该property所在类被\@ObservedV2装饰时,才具有触发UI刷新的能力。
21 - 未被\@Trace装饰的属性用在UI中无法感知到变化,也无法触发UI刷新。
122 通过这种方式虽然能够实现对嵌套类中属性变化的观测,但是当嵌套层级较深时,代码将会变得十分复杂,易用性差。因此推出类装饰器\@ObservedV2与成员变量装饰器\@Trace,增强对嵌套类中属性变化…
131 | \@Trace成员变量装饰器 | 说明 |
138 使用\@ObservedV2装饰的类中被\@Trace装饰的属性具有被观测变化的能力,当该属性值变化时,会触发该属性绑定的UI组件刷新。
140 - 在嵌套类中使用\@Trace装饰的属性具有被观测变化的能力。
145 @Trace age: number = 100;
168 - 在继承类中使用\@Trace装饰的属性具有被观测变化的能力。
173 @Trace name: string = "Tom";
194 - 类中使用\@Trace装饰的静态属性具有被观测变化的能力。
199 @Trace static count: number = 1;
216 - \@Trace装饰内置类型时,可以观测各自API导致的变化:
227 \@ObservedV2与\@Trace装饰器存在以下使用限制:
229 - 非\@Trace装饰的成员属性用在UI上无法触发UI刷新。
235 @Trace age: number = 8;
244 // age被@Trace装饰,用在UI中可以触发UI刷新
249 // id未被@Trace装饰,用在UI中不会触发UI刷新
269 - \@Trace不能用在没有被\@ObservedV2装饰的class上。
274 @Trace name: string = "Tom"; // 错误用法,编译时报错
278 - \@Trace是class中属性的装饰器,不能用在struct中。
283 @Trace message: string = "Hello World"; // 错误用法,编译时报错
290 - \@ObservedV2、\@Trace不能与[\@Observed](arkts-observed-and-objectlink.md)、[\@Track](arkts-track.md)混合…
295 @Trace name: string = "Tom"; // 错误用法,编译时报错
304 - 使用\@ObservedV2与\@Trace装饰的类不能和[\@State](arkts-state.md)等V1的装饰器混合使用,编译时报错。
310 @Trace jobName: string = "Teacher";
314 @Trace name: string = "Tom";
315 @Trace age: number = 25;
347 @Trace jobName: string = "Teacher";
351 @Trace name: string = "Tom";
352 @Trace age: number = 25;
389 在下面的嵌套类场景中,Pencil类是Son类中最里层的类,Pencil类被\@ObservedV2装饰且属性length被\@Trace装饰,此时length的变化能够被观测到。
391 \@Trace装饰器与现有状态管理框架的[\@Track](arkts-track.md)与[\@State](arkts-state.md)装饰器的能力不同,@Track使class具有属性级更新…
393 * 点击Button("change length"),length是被\@Trace装饰的属性,它的变化可以触发关联的UI组件,即UINode (1)的刷新,并输出"id: 1 renderTim…
400 @Trace length: number = 21; // 当length变化时,会刷新关联的组件
446 \@Trace支持在类的继承场景中使用,无论是在基类还是继承类中,只有被\@Trace装饰的属性才具有被观测变化的能力。
457 @Trace age: number = 0;
521 ### \@Trace装饰基础类型的数组
523 \@Trace装饰数组时,使用支持的API能够观测到变化。支持的API见[观察变化](#观察变化)。
524 在下面的示例中\@ObservedV2装饰的Arr类中的属性numberArr是\@Trace装饰的数组,当使用数组API操作numberArr时,可以观测到对应的变化。注意使用数组长度进行判断以防…
532 @Trace numberArr: number[] = [];
625 ### \@Trace装饰对象数组
627 * \@Trace装饰对象数组personList以及Person类中的age属性,因此当personList、age改变时均可以观测到变化。
635 @Trace age: number = 0;
645 @Trace personList: Person[] = [];
695 ### \@Trace装饰Map类型
697 * 被\@Trace装饰的Map类型属性可以观测到调用API带来的变化,包括 set、clear、delete。
698 * 因为Info类被\@ObservedV2装饰且属性memberMap被\@Trace装饰,点击Button('init map')对memberMap赋值也可以观测到变化。
703 @Trace memberMap: Map<number, string> = new Map([[0, "a"], [1, "b"], [3, "c"]]);
749 ### \@Trace装饰Set类型
751 * 被\@Trace装饰的Set类型属性可以观测到调用API带来的变化,包括 add, clear, delete。
752 * 因为Info类被\@ObservedV2装饰且属性memberSet被\@Trace装饰,点击Button('init set')对memberSet赋值也可以观察变化。
757 @Trace memberSet: Set<number> = new Set([0, 1, 2, 3, 4]);
798 ### \@Trace装饰Date类型
800 * \@Trace装饰的Date类型属性可以观测调用API带来的变化,包括 setFullYear、setMonth、setDate、setHours、setMinutes、setSeconds、s…
801 * 因为Info类被\@ObservedV2装饰且属性selectedDate被\@Trace装饰,点击Button('set selectedDate to 2023-07-08')对select…
806 @Trace selectedDate: Date = new Date('2021-08-08')