知者何南 发表于 2024-9-22 13:18:47

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

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


组件生命周期

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

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

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

[*]onPageShow:页面表现时实行
[*]onPageHide:页面隐藏时实行
[*]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")
}
}
https://i-blog.csdnimg.cn/direct/68897f234c64424396348f523b1d6699.png
第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----------onBackPress2app Log: FirstPage----------onPageHide2
app Log: FirstPage----------onPageShow1
app Log: FirstPage----------aboutToDisappear2

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【鸿蒙学习条记】组件生命周期・页面生命周期