1. 自定义组件生命周期
- 自定义组件:@Component 装饰的UI单元,可以组合多个系统组件实现UI的复用。
组件生命周期,即一般用@Component装饰的自定义组件的生命周期,- 提供以下生命周期接口:
2.1 aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。
2.2 aboutToDisappear:在自定义组件即将析构销毁时执行。
2. 页面入口组件生命周期
- 页面:即应用的UI页面。可以由一个或多个自定义组件组成,@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才可以调用页面的生命周期。页面生命周期,即被@Entry装饰的组件生命周期。
- 提供以下生命周期接口:
2.1 aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。
2.2 aboutToDisappear:在组件即将析构销毁时执行。router.replaceUrl() 进入页面会触发。
2.1 onPageShow:页面每次显示时触发。包括路由,应用从后台进入前台等场场景。router.pushUrl() 进入页面会触发。
2.2 onPageHide:页面每次隐藏时触发一次。包括路由,应用从前台进入后台等场景。
2.3 onBackPress:当用户点击返回按钮时触发。
2.1 流程图如下
3 页面入口组件(A父)嵌套自定义组件(A子)、以及页面入口组件(B父)的生命周期
- 打开A父组件,
A父aboutToAppear —> A子aboutToAppear —> A父onPageShow- 在A父组件隐藏A子(flag = false):
A子aboutToDisappear- 在A父组件显示A子(flag = true):
A子aboutToAppear- 从A父跳转(pushUrl)到B父:
B父aboutToAppear —> A父onPageHide —> B父onPageShow- 从B父点击返回按钮返回A父:
B父onBackPress —> A父onPageShow —> B父aboutToDisappear- 从A父跳转(replaceUrl)到B父:
A父aboutToDisappear —> A子aboutToDisappear —> B父aboutToAppear —> B父onPageShow