当前位置:网站首页>ArkUI开发框架组件的生命周期
ArkUI开发框架组件的生命周期
2022-07-17 23:11:00 【华为云】
ArkUI开发框架赋予了组件独有的生命周期方法,这里主要讲两种情况:
系统组件生命周期
自定义组件的生命周期
对于系统组件来讲,生命周期方法是 onAppear 和 onDisAppear ,
onAppear:组件从组件树上挂载的回调。
onDisAppear:组件从组件树上卸载的回到。
简单样例如下所示:
@Entry @Component struct Index { @State textShow: boolean = false; // 默认状态 build() { Column() { Column() { if (this.textShow) { Text('挂载/卸载') .fontSize(22) .onAppear(() => { console.log("哈哈,我被挂载了") }) .onDisAppear(() => { console.log("呜呜,我被卸载了") }) } } .width('100%') .height(60) Button(this.textShow ? "卸载" : "挂载") .stateStyles({ pressed: { .backgroundColor(Color.Pink) // 设置点击时的样式 } }) .onClick(() => { // 依次挂载卸载Text组件 this.textShow = !this.textShow; }) } .width('100%') .height('100%') }}自定义组件的生命周期。
组件的生命周期
使用
@Component修饰的组件,ArkUI开发框架会自动为其赋予私有的生命周期方法aboutToAppear()和aboutToDisappear(),它们用于通知开发者该自定义组件的生命周的变更。aboutToAppear:函数在创建自定义组件的新实例后,在执行其
build()函数之前执行。允许在该函数中改变状态变量,更改将在后续执行build()函数中生效。aboutToDisappear:函数在自定义组件析构消耗之前执行。不允许在该函数中改变状态变量,特别是
@Link变量的修改可能会导致应用程序行为不稳定。
页面的生命周期
页面本质上也是一个组件,只是页面对于组件来讲多了一个修饰符
@Entry,该修饰符表示当前组件是一个页面,它需要在config.json中做配置,页面除了具有组件的生命周期外,它还有自己独有的生命周期方法:onPageShow:页面显示时触发一次,包括路由过程、应用进入前后台等场景,仅
@Entry修饰的自定义组件生效。onPageHide:页面消失时触发一次,包括路由过程、应用进入前后台等场景,仅
@Entry修饰的自定义组件生效。onBackPress:当用户点击返回按钮时触发,仅@Entry修饰的自定义组件生效。该方法返回boolean类型的值,说明如下:
返回
true表示页面自己处理返回逻辑, 不进行页面路由。返回
false表示使用默认的返回逻辑。不返回值会作为
false处理。
组件生命周期制作表格对比说明如下:
| 函数名 | 描述 |
|---|---|
| onAppear | 系统组件独有的方法,组件从组件树上挂载的回调。 |
| onDisAppear | 系统组件独有的方法,组件从组件树上卸载的回到。 |
| aboutToAppear | 函数在创建自定义组件的新实例后,在执行其 build() 函数之前执行。允许在该函数中改变状态变量,更改将在后续执行 build() 函数中生效。 |
| aboutToDisappear | 函数在自定义组件析构消耗之前执行。不允许在该函数中改变状态变量,特别是 @Link 变量的修改可能会导致应用程序行为不稳定。 |
| onPageShow | 页面显示时触发该回调,包括路由过程、应用进入前后台等场景。仅 @Entry 修饰的自定义组件生效。 |
| onPageHide | 页面消失时触发该回调,包括路由过程、应用进入前后台等场景。仅 @Entry 修饰的自定义组件生效。 |
| onBackPress | 当用户点击返回按钮时触发,该方法返回 boolean 类型,true:表示页面自己处理返回逻辑, 不进行页面路由。false:表示使用默认的返回逻辑。不返回值会作为 false 处理。仅 @Entry 修饰的自定义组件生效。 |
注意的一点,允许在生命周期函数中使用 Promiseasync await 。
边栏推荐
- 【Renesas RA6M4开发板之I2C读取mpu6050】
- 2. MySQL introduction
- C - matrix chain multiplexing (Application of stack)
- 【花雕动手做】有趣好玩的音乐可视化项目(11)---WS2812幻彩灯带
- Is it safe for xinjimin to buy funds on Alipay
- session管理
- SBOM (software bill of materials)
- 您填写的保质期截止当前已经小于10天,不允许发布,若实际保质期大于10天,请如实填写生产日期与进货日期
- GYM103660H.Distance
- Field programmable logic gate array FPGA
猜你喜欢
![2040: [蓝桥杯2022初赛] 砍竹子(优先队列)](/img/76/512b7fd4db55f9f7d8f5bcb646d9fc.jpg)
2040: [蓝桥杯2022初赛] 砍竹子(优先队列)

初来乍到,多多关照(其实不是初来了^_^,Hello CSDN,我来了)

3438. Number system conversion

UCAS. Deep learning Final review knowledge points summary notes

FMC sub card: 4-channel 12bit 3.2g, 2-channel 12bit, 6.4g AD acquisition / 5G acquisition card /6g acquisition card

文档型全文检索知识库管理系统源码

session管理

session management

kube-proxy & Service & Endpoint

C# wpf 使用ListBox实现尺子控件
随机推荐
Leetcode 1275. Trouver le vainqueur de "Jingzi"
影响分析:RubyGems未授权访问漏洞(CVE-2022-29176)
一次函数 T1744 963字符写法
How to bind process threads to CPU cores
FPGA (VGA Protocol Implementation)
Unix ls
1. Basic concepts of DBMS
Zabbix实现对Redis的监控
Behind the high salary of programmers' operation and maintenance
Icml2022 | géométrie multimodale Contrastive Representation Learning
PKI: TLS handshake
最大堆与堆排序和优先队列
Notepad++实用功能分享(正则行尾行首替换常用方法、文本比对功能等)
Li Hongyi machine learning introduction -2022.07.11
Codeforces Round #807 (Div. 2) E. Mark and Professor Koro 二进制/线段树
初试Dart,笔记
P1004 [NOIP2000 提高组] 方格取数
06_服务调用Feign
Wechat applet 8 cloud function
[microservice] microservice learning note 3: use feign to replace resttemplate to complete remote call