【鸿蒙学习笔记】组件生命周期・页面生命周期
创始人
2024-11-10 05:36:55

官方文档:页面和自定义组件生命周期

目录标题

  • 组件生命周期
  • 页面生命周期
  • 练习中理解
    • FirstPage.ets
    • SecondPage.ets
    • 第1步:加载 First Page
    • 第2步:First Page → 点Next按钮
    • 第3步:Second Page → 点back按钮
    • 第4步:First Page → 点Next按钮
    • 第5步:Second Page → 点返回按钮

组件生命周期

@Component装饰的组件便可以调用组件的生命周期

  1. aboutToAppear:实例创建后,在执行其build()函数之前执行。
  2. onDidBuild:组件build()函数执行完成之后回调该接口。
  3. aboutToDisappear:实例销毁前。

创建实例 → aboutToAppearbuild()onDidBuild → … → aboutToDisappear → 实例销毁

页面生命周期

只有被@Entry装饰的组件才可以调用页面的生命周期

  1. onPageShow:页面显示时执行
  2. onPageHide:页面隐藏时执行
  3. onBackPress:点击返回键执行

练习中理解

FirstPage.ets

import { router } from '@kit.ArkUI'  @Entry @Component struct FirstPage {   @State message: string = 'First Page';    build() {     Row() {       Column() {         Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)         Button('Next')           .onClick(() => {             router.pushUrl({               url: "pages/SecondPage"             })           })       }       .width('100%')      }     .height('100%')   }    aboutToAppear(): void {     console.log("FirstPage----------aboutToAppear1")   }    aboutToDisappear(): void {     console.log("FirstPage----------aboutToDisappear1")   }    onPageShow(): void {     console.log("FirstPage----------onPageShow1")   }    onPageHide(): void {     console.log("FirstPage----------onPageHide1")   }    onBackPress(): boolean | void {     console.log("FirstPage----------onBackPress1")   } } 

SecondPage.ets

import { router } from '@kit.ArkUI'  @Entry @Component struct SecondPage {   @State message: string = 'Second Page';    build() {     Row() {       Column() {         Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)         Button("Back")           .onClick(() => {             router.back()           })       }       .width('100%')     }     .height('100%')   }    aboutToAppear(): void {     console.log("FirstPage----------aboutToAppear2")   }    aboutToDisappear(): void {     console.log("FirstPage----------aboutToDisappear2")   }    onPageShow(): void {     console.log("FirstPage----------onPageShow2")   }    onPageHide(): void {     console.log("FirstPage----------onPageHide2")   }    onBackPress(): boolean | void {     console.log("FirstPage----------onBackPress2")   } } 

在这里插入图片描述

第1步:加载 First Page

app Log: FirstPage----------aboutToAppear1 app Log: FirstPage----------onPageShow1 

第2步:First Page → 点Next按钮

app Log: FirstPage----------onPageHide1 app Log: FirstPage----------aboutToAppear2 app Log: FirstPage----------onPageShow2 

第3步:Second Page → 点back按钮

app Log: FirstPage----------onPageHide2 app Log: FirstPage----------onPageShow1 app Log: FirstPage----------aboutToDisappear2 

第4步:First Page → 点Next按钮

app Log: FirstPage----------onPageHide1 app Log: FirstPage----------aboutToAppear2 app Log: FirstPage----------onPageShow2 

第5步:Second Page → 点返回按钮

app Log: FirstPage----------onBackPress2 app Log: FirstPage----------onPageHide2 app Log: FirstPage----------onPageShow1 app Log: FirstPage----------aboutToDisappear2 

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...