HarmonyOSUI范式

438 阅读2分钟

1. 自定义组件

# freezeWhenInactive属性 【Api11开始支持】
# Entry装饰器:UI页面入口,【Api10开始支持接收LocalStorage|EntryOptions的参数】

@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方法会返回一个新的数组 image.png

2. 组件生命周期

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