关于生命周期中的aboutToAppear和onPageShow的理解和应用
在官网的“自定义组件的生命周期”这一章节当中介绍的生命周期中,有两个对开发我觉得很重要的生命周期,分别是aboutToAppear和onPageShow。
首先来看一下这两个生命周期的官方文档说明:
aboutToAppear:
aboutToAppear函数在创建自定义组件的新实例后,在执行其build()函数之前执行。允许在aboutToAppear函数中改变状态变量,更改将在后续执行build()函数中生效。实现自定义布局的自定义组件的aboutToAppear生命周期在布局过程中触发。
onPageShow:
页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅@Entry装饰的自定义组件作为页面时生效。
从两者相同的角度来说,其都是在自定义组件显示后,主动去触发的生命周期,在这两个生命周期里可以写一些数据获取啊等相关的操作(比如通过网络从后端获取当前页面的一些数据)
主要的区别在于:
首先,aboutToAppear是适用于所有自定义组件的,包括通过@Entry装饰的,即我们通俗一点理解的页面,但是onPageShow是只针对@Entry装饰的页面的。那么我们一般在常规的开发方案中,一级页面是通过一个@Entry装饰的页面,通过tab来加载多个自定义子组件实现的,所以在这种背景下,只有主页面可以用onPageShow,而tab里加载的子组件只能用aboutToAppear
其次,当我们打开A页面时(@Entry装饰的),会先执行aboutToAppear,再执行onPageShow,然后我们从A页面跳转到B页面(注意,是跳转,不是替换),再从B页面返回到A页面的时候,只会执行onPageShow,而不会执行aboutToAppear。在实践中,例如从列表页跳转到新增数据页,如果有新增数据则刷新列表页数据的话,最简单的方式(不考虑性能的情况下),就是把列表页的获取数据代码放在onPageShow里
最后,对于两者的加载顺序上,除了第二点中提到的先aboutToAppear再onPageShow以外,对于build()在两者之间的顺序问题,文档中有图片如下:
如图可知,是先aboutToAppear然后build,再onPageShow,所以,如果有一些耗时的操作,不要写在aboutToAppear里通过同步去写,否则会阻塞页面的渲染,即影响冷启动时间。但是这个问题在onPageShow当中就不用去考虑,因为执行的时候已经build完成了。
所以,总结的来说,在aboutToAppear中写的代码,要通过异步去实现耗时的操作,而onPageShow里面的代码要考虑到因为页面跳转返回所导致的反复触发的问题
- 0回答
- 0粉丝
- 0关注
- 页面和自定义组件生命周期
- UIAbility组件生命周期
- 自定义组件之<一>组件语法和生命周期
- 04-UIAbility 介绍-生命周期
- 鸿蒙Navigation页面生命周期
- OpenHarmony: 如何使用AbilityStage的生命周期函数
- 【HarmonyOS】HMRouter使用详解(三)生命周期
- 鸿蒙自定义组件生命周期
- 鸿蒙hvigor构建任务依赖与生命周期简介
- ZRouter动态路由框架—生命周期管理能力
- 第七十四课:HarmonyOS Next 的用户生命周期管理
- 第九十五课:HarmonyOS Next 的用户生命周期研究
- ArkUI-X中Plugin生命周期开发指南
- HarmonyOS NEXT ArkUI生命周期终极指南 | 组件与页面的关系
- 201.HarmonyOS NEXT系列教程之图案锁生命周期管理详解