【鸿蒙学习条记】组件生命周期・页面生命周期

打印 上一主题 下一主题

主题 818|帖子 818|积分 2454

官方文档:页面和自界说组件生命周期

  
组件生命周期

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

  • aboutToAppear:实例创建后,在实行其build()函数之前实行。
  • onDidBuild:组件build()函数实行完成之后回调该接口。
  • aboutToDisappear:实例销毁前。
创建实例 → aboutToAppear → build() → onDidBuild → … → aboutToDisappear → 实例销毁
页面生命周期

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

  • onPageShow:页面表现时实行
  • onPageHide:页面隐藏时实行
  • onBackPress:点击返回键实行
练习中明确

FirstPage.ets

  1. import { router } from '@kit.ArkUI'
  2. @Entry
  3. @Component
  4. struct FirstPage {
  5.   @State message: string = 'First Page';
  6.   build() {
  7.     Row() {
  8.       Column() {
  9.         Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)
  10.         Button('Next')
  11.           .onClick(() => {
  12.             router.pushUrl({
  13.               url: "pages/SecondPage"
  14.             })
  15.           })
  16.       }
  17.       .width('100%')
  18.     }
  19.     .height('100%')
  20.   }
  21.   aboutToAppear(): void {
  22.     console.log("FirstPage----------aboutToAppear1")
  23.   }
  24.   aboutToDisappear(): void {
  25.     console.log("FirstPage----------aboutToDisappear1")
  26.   }
  27.   onPageShow(): void {
  28.     console.log("FirstPage----------onPageShow1")
  29.   }
  30.   onPageHide(): void {
  31.     console.log("FirstPage----------onPageHide1")
  32.   }
  33.   onBackPress(): boolean | void {
  34.     console.log("FirstPage----------onBackPress1")
  35.   }
  36. }
复制代码
SecondPage.ets

  1. import { router } from '@kit.ArkUI'
  2. @Entry
  3. @Component
  4. struct SecondPage {
  5.   @State message: string = 'Second Page';
  6.   build() {
  7.     Row() {
  8.       Column() {
  9.         Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)
  10.         Button("Back")
  11.           .onClick(() => {
  12.             router.back()
  13.           })
  14.       }
  15.       .width('100%')
  16.     }
  17.     .height('100%')
  18.   }
  19.   aboutToAppear(): void {
  20.     console.log("FirstPage----------aboutToAppear2")
  21.   }
  22.   aboutToDisappear(): void {
  23.     console.log("FirstPage----------aboutToDisappear2")
  24.   }
  25.   onPageShow(): void {
  26.     console.log("FirstPage----------onPageShow2")
  27.   }
  28.   onPageHide(): void {
  29.     console.log("FirstPage----------onPageHide2")
  30.   }
  31.   onBackPress(): boolean | void {
  32.     console.log("FirstPage----------onBackPress2")
  33.   }
  34. }
复制代码

第1步:加载 First Page

  1. app Log: FirstPage----------aboutToAppear1
  2. app Log: FirstPage----------onPageShow1
复制代码
第2步:First Page → 点Next按钮

  1. app Log: FirstPage----------onPageHide1
  2. app Log: FirstPage----------aboutToAppear2
  3. app Log: FirstPage----------onPageShow2
复制代码
第3步:Second Page → 点back按钮

  1. app Log: FirstPage----------onPageHide2
  2. app Log: FirstPage----------onPageShow1
  3. app Log: FirstPage----------aboutToDisappear2
复制代码
第4步:First Page → 点Next按钮

  1. app Log: FirstPage----------onPageHide1
  2. app Log: FirstPage----------aboutToAppear2
  3. app Log: FirstPage----------onPageShow2
复制代码
第5步:Second Page → 点返回按钮

  1. app Log: FirstPage----------onBackPress2app Log: FirstPage----------onPageHide2
  2. app Log: FirstPage----------onPageShow1
  3. app Log: FirstPage----------aboutToDisappear2
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

知者何南

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表