Lines Matching refs:State

1 # \@State装饰器:组件内状态
4 \@State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就可以触发其直接绑定UI组件的刷新。当状态改变时,UI会发生对应的渲染改变。
7 在状态变量相关装饰器中,\@State是最基础的,使变量拥有状态属性的装饰器,它也是大部分状态变量的数据源。
9 在阅读\@State文档前,建议开发者对状态管理框架有基本的了解。建议提前阅读:[状态管理概述](./arkts-state-management-overview.md)。
19 \@State装饰的变量,与声明式范式中的其他被装饰变量一样,是私有的,只能从组件内部访问,在声明时必须指定其类型和本地初始化。初始化也可选择使用命名参数机制从父组件完成初始化。
21 \@State装饰的变量拥有以下特点:
23 - \@State装饰的变量与子组件中的\@Prop装饰变量之间建立单向数据同步,与\@Link、\@ObjectLink装饰变量之间建立双向数据同步。
25 - \@State装饰的变量生命周期与其所属自定义组件的生命周期相同。
30 | \@State变量装饰器 | 说明 |
34State支持联合类型实例](#state支持联合类型实例)。 <br/>**注意**<br/>当使用undefined和null的时候,建议显式指定类型,遵循TypeScript类型校验,比如:…
42State装饰变量自身的初值。<br/>支持父组件中常规变量(常规变量对@State赋值,只是数值的初始化,常规变量的变化不会触发UI刷新,只有状态变量才能触发UI刷新)、\@State、[\@L…
43 | 用于初始化子组件 | \@State装饰的变量支持初始化子组件的常规变量、\@State、\@Link、\@Prop、\@Provide。 |
62 @State count: number = 0;
89 \@State装饰的类型是Model
93 @State title: Model = new Model('Hello', new Person('World'));
96 对\@State装饰变量的赋值。
103 对\@State装饰变量的属性赋值。
128 \@State装饰的对象为Model类型数组时。
132 @State title: Model[] = [new Model(11), new Model(1)];
176 @State selectedDate: Date = new Date('2021-08-08');
225 1. \@State装饰的变量必须初始化,否则编译期会报错。
229 @State count: number;
232 @State count: number = 10;
235 2. \@State不支持装饰Function类型的变量,框架会抛出运行时错误。
243 以下示例为\@State装饰的简单类型,count被\@State装饰成为状态变量,count的改变引起Button组件的刷新:
254 @State count: number = 0;
268 - 自定义组件MyComponent定义了被\@State装饰的状态变量count和title,其中title的类型为自定义类Model。如果count或title的值发生变化,则查询MyCompo…
298 @State title: Model = new Model('Hello World');
299 @State count: number = 0;
308 // @State变量的更新将触发上面的Text组件内容更新
316 // @State变量的更新将触发该Button组件的内容更新
328 从该示例中,我们可以了解到\@State变量的初始化机制:
354 > 从API version 11开始,\@State支持Map类型。
362 @State message: Map<number, string> = new Map([[0, "a"], [1, "b"], [3, "c"]]);
399 > 从API version 11开始,\@State支持Set类型。
407 @State message: Set<number> = new Set([0, 1, 2, 3, 4]);
436 ## State支持联合类型实例
438 \@State支持联合类型和undefined和null,在下面的示例中,count类型为number | undefined,点击Button改变count的属性或者类型,视图会随之刷新。
453 @State count: number | undefined = 0;
472 …作用域指向的对象,而不是使用时所在的作用域指向的对象。所以在该场景下, changeCoverUrl的this指向PlayDetailViewModel,而不是被装饰器\@State代理的状态变量。
494 @State vm: PlayDetailViewModel = new PlayDetailViewModel();
535 @State vm: PlayDetailViewModel = new PlayDetailViewModel();
569 @State viewModel: TestModel = new TestModel();
622 @State viewModel: TestModel = new TestModel();
678 @State son: string = '111';
679 @State parent: Parent = new Parent();
718 @State son: Son = new Son('222');
719 @State parent: Parent = new Parent();
758 @State son: Son = new Son('222');
759 @State parent: Parent = new Parent();
796 @State dataObjFromList: DataObj = this.list[0];
824 …相同的类常量赋值给一个Class类型的状态变量,会触发刷新。原因是在状态管理V1中,会给被\@Observed装饰的类对象以及使用状态变量装饰器如@State装饰的Class、Date、Map、S…
843 @State dataObjFromList: DataObj = this.list[0];
890 @State dataObjFromList: DataObj = this.list[0];
945 @State count: number = 1;
963 FIX THIS APPLICATION ERROR: @Component 'Index'[4]: State variable 'count' has changed during render…
974 @State message: number = 20;
1003 在build方法内,当\@State装饰的变量是Object类型、且通过a.b(this.object)形式调用时,b方法内传入的是this.object的原生对象,修改其属性,无法触发UI刷新。如…
1022 @State balloon: Balloon = new Balloon(10);
1068 @State balloon: Balloon = new Balloon(10);
1125 @State count: number = 10;