1. 自定义组件
@Entry
@Component({freezeWhenInactive:false})
struct MyComponent {
build() {
}
}
Build函数
- @Entry装饰的自定义组件,build函数下的根节点唯一且必要,且必须为容器组件,其中ForEach禁止作为根节点。
- @Component装饰的自定义组件,build函数下的根节点唯一且必要,可以为非容器组件,禁止ForEach作为根节点。
- build函数中,禁止使用console.info输入日志。
- build函数中不允许调用没有@Builder装饰的方法,但是系统组件的参数,可以是函数的返回值 (
Text(this.getValue()))。
- build函数中不允许使用switch语法,三目表达式,可以使用if条件语句。
- build函数中,不允许直接改变状态变量值,容易导致死循环。
Build函数中更改状态变量隐蔽的问题
- 在@Builder,@Extend或@Styles方法内改变状态变量。
- 在计算参数时调用函数中改变应用状态变量,
Text('${this.calcLabel()}')。
- 对当前数组做出修改,sort()改变了数组this.arr,随后的filter方法会返回一个新的数组

2. 组件生命周期
- 页面生命周期:
- onPageShow: 页面每次显示时触发一次,包括路由过程、应用进入前台等场景。
- onPageHide: 页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。
- onBackPress: 当用户点击返回按钮时触发
- 组件生命周期:
- aboutToAppear:组件即将出现时回调该接口,在build函数之前执行。
- onDidBuild:build函数执行完成之后回调。
- aboutToDisappear:组件销毁之前执行。不建议在该函数内使用async,await,阻止了自定义组件的垃圾回收。
