关于生命周期中的aboutToAppear和onPageShow的理解和应用

上海张律师
• 阅读 1

​ ##HarmonyOS 应用开发##

在官网的“自定义组件的生命周期”这一章节当中介绍的生命周期中,有两个对开发我觉得很重要的生命周期,分别是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和onPageShow的理解和应用

如图可知,是先aboutToAppear然后build,再onPageShow,所以,如果有一些耗时的操作,不要写在aboutToAppear里通过同步去写,否则会阻塞页面的渲染,即影响冷启动时间。但是这个问题在onPageShow当中就不用去考虑,因为执行的时候已经build完成了。

所以,总结的来说,在aboutToAppear中写的代码,要通过异步去实现耗时的操作,而onPageShow里面的代码要考虑到因为页面跳转返回所导致的反复触发的问题

点赞
收藏
评论区
推荐文章
明月 明月
3年前
vue常见面试题
1.有使用过vue吗?说说你对vue的理解?2.说说你对SPA单页面的理解,它的优缺点分别是什么?如何实现SPA应用呢?3.什么是双向绑定?原理是什么?4.请描述下你对vue生命周期的理解?在created和mounted这两个生命周期中请求数据有什么区别呢?5.Vue组件之间的通信方式都有哪些?6.vshow和vif有什么区别?使用场景分别是什
Stella981 Stella981
3年前
Flutter 中的组件绘制完成监听、组件生命周期和APP生命周期
Flutter的生命周期说到Flutter的生命周期,其实就是说StatefulWidget的生命周期,因为StatelessWidget是静态控件。StatefulWidget,通过借助于State对象,处理状态变化,并体现在UI上。这些阶段,就涵盖了一个组件从加载到卸载的全过程,即生命周期。
Stella981 Stella981
3年前
React Native 中组件的生命周期
概述就像Android开发中的View一样,ReactNative(RN)中的组件也有生命周期(Lifecycle)。所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解生命周期,是合理开发的关键。RN组件的生命周期整理如下图:!33componentlifecycle(https://static.osch
Stella981 Stella981
3年前
Laravel的生命周期
Laravel的生命周期世间万物皆有生命周期,当我们使用任何工具时都需要理解它的工作原理,那么用起来就会得心应手,应用开发也是如此。理解了它的原理,那么使用起来就会游刃有余。在了解Laravel的生命周期前,我们先回顾一下PHP的生命周期。PHP的生命周期PHP的运行模
Wesley13 Wesley13
3年前
Java总结篇系列:Java多线程(一)
多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的。一.线程的生命周期及五种基本状态关于Java中线程的生命周期,首先看一下下面这张较为经典的图:!(https://oscimg.oschina.net/oscnet/6430f76219ba08fbe0a9d18ffe4e947387b.jpg)上图中基本上囊括了J
GeorgeGcs GeorgeGcs
2小时前
【HarmonyOS 5】鸿蒙页面和组件生命周期函数
鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财一、生命周期阶段:创建阶段build:构建组件的UI结构和样式。onDidBuild:build方法执行完毕后调用,可用于数据初始化或额外的UI调整。挂载阶段onPageShow:页面显示
融云IM即时通讯 融云IM即时通讯
6个月前
融云IM干货丨uni-app 生命周期有哪些?
uniapp的生命周期分为应用生命周期、页面生命周期和组件生命周期三类:应用生命周期应用生命周期函数需要在App.vue中声明,主要包含以下函数:onLaunch:当uniapp初始化完成时触发(全局只触发一次)。onShow:当uniapp启动,或从后台
布局王 布局王
13小时前
鸿蒙仓颉语言开发教程:页面和组件的生命周期
大家下午好,今天要分享的内容是仓颉开发语言中的生命周期。其实幽蓝君比较喜欢分享代码,不太喜欢讲太理论的东西,今天之所以单独写一篇文章分享生命周期的内容,因为这部分内容如果不讲一下还真是容易踩坑。生命周期指的是页面或者组件从加载、显示到消失的过程,在这个过程
上海张律师 上海张律师
6小时前
如何监听组件再次显示的事件?
​HarmonyOS应用开发我们知道,对于组件的生命周期,有aboutToAppear和aboutToDisAppear,即监听这个组件被挂载和卸载的事件,和被@Entry修饰的页面不同,组件是没有每次显示都能触发的onPageShow这个生命周期的,但是
上海张律师 上海张律师
6小时前
利用onPageShow实现返回刷新的操作
​HarmonyOS应用开发之前提到过aboutToAppear和onPageShow的区别以及基础的概念,今天我们来聊一下这两个在实际项目中的应用。如果你写过小程序的话,可以将aboutToAppear类别成onLoad,onPageShow类别为onS