一.基本语法
1.@Entry、@Component和@State都是装饰器,@Component表示自定义组件,@Entry表示该自定义组件为入口组件,
@State表示组件中的状态变量,状态变量变化会触发UI刷新。
2.页面和自定义组件生命周期
onPageShow:页面每次显示时触发。
onPageHide:页面每次隐藏时触发一次。
onBackPress:当用户点击返回按钮时触发。
aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。
aboutToDisappear:在自定义组件即将析构销毁时执行。
3.@Builder装饰器:自定义构建函数
3.1.组件内自定义构建函数
@Builder MyBuilderFunction(){ ... }
使用方法:this.MyBuilderFunction(){ ... }
3.2.全局自定义构建函数
@Builder function MyGlobalBuilderFunction(){ ... }
使用方法:MyGlobalBuilderFunction()
4.@BuilderParam装饰器:引用@Builder函数
4.1.初始化@BuilderParam装饰的方法
注意:@BuilderParam装饰的方法只能被自定义构建函数(@Builder装饰的方法)初始化。
@Component
struct Child {
@BuilderParam aBuilder0: () => void = this.doNothingBuilder
build(){}
}
4.2.用父组件自定义构建函数初始化子组件@BuilderParam装饰的方法
@Component
struct Child {
@BuilderParam aBuilder0: () => void;
build() {
Column() {
this.aBuilder0()
}
}
}
二.状态管理V1
- @State装饰器 使变量拥有状态属性的装饰器
- @Prop装饰器:装饰的变量可以和父组件建立单向的同步关系,父组件变化会自动同步到子组件,子组件对变量的修改不会自动传递到父组件。
- @Link装饰器:父子双向同步
- @Provide装饰器和@Consume装饰器:与后代组件双向同步(一对多关系)
- @Watch装饰器 :为状态变量设置回调函数 (无法实现对对象、数组中某一单个属性或数组项变化的监听)
-@Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化(解决状态失效的问题)
tip:状态管理V1存在多种可接受外部传入的装饰器:@State@Prop@Link@ObjectLink (子组件参数)
二.状态管理V2
- @Local装饰器:组件内部状态 (无法确保@State装饰变量的初始值一定为组件内部定义的值)
- @Param: 组件外部输入。(子组件接收参数)
-@ObservedV2装饰器和@Trace装饰器:解决@Observed装饰器和@ObjectLink调用过于复杂的问题.
-@Once:仅初始化同步一次。(@Once必须搭配@Param使用)
-@Event装饰器 :规范组件输出,修饰函数 - @Provider和@Consumer 跨组件层级双向同步
- @Monitor装饰器: 状态变量修改监听.
- @Computed装饰器:计算属性.(防止重复计算,为方法装饰器,仅能装饰getter方法)
- @Type :使得类属性序列化时不丢失类型信息,便于类的反序列化。