第十九讲_HarmonyOS应用页面和自定义组件生命周期

HarmonyOS应用页面和自定义组件生命周期

  • [1. 什么叫页面](#1. 什么叫页面)
  • [2. 什么叫自定义组件](#2. 什么叫自定义组件)
  • [3. 页面的生命周期](#3. 页面的生命周期)
  • [4. 自定义组件的生命周期](#4. 自定义组件的生命周期)
  • [5. 一个页面的生命周期流程](#5. 一个页面的生命周期流程)

1. 什么叫页面

页面:即HarmonyOS应用的UI页面。

  • 由一个或者多个自定义组件组成
  • @Entry装饰的自定义组件为页面的入口组件,一个页面有且仅能有一个@Entry
  • 只有被@Entry装饰的组件才可以调用页面的生命周期

2. 什么叫自定义组件

自定义组件:@Component装饰的UI单元。

  • 可以组合多个系统组件实现UI的复用
  • 可以调用组件的生命周期

3. 页面的生命周期

页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:

  • onPageShow():页面每次显示时触发一次,包括路由过程、应用进入前台等场景。
  • onPageHide():页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。
  • onBackPress():当用户点击返回按钮时触发。

4. 自定义组件的生命周期

  • aboutToAppear():组件即将出现时回调,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。
  • aboutToDisappear():在自定义组件析构销毁之前执行。

5. 一个页面的生命周期流程

被@Entry装饰的组件(即页面)生命周期的流程图:

typescript 复制代码
/**
 * 被@Component修饰就是一个组件
 * 被@Entry修饰的组件就是一个页面
 */
@Entry
@Component
struct Index {
  @State message: string = 'Hello World'

  // 自定义组件的新实例后,在执行其build()函数之前执行
  aboutToAppear() {
    console.warn("组件被实例化了")
  }

  // 页面每次显示时触发一次,包括路由过程、应用进入前台等场景
  onPageShow() {
    console.warn("页面被显示了");
  }

  // 页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景
  onPageHide() {
    console.warn("页面被隐藏了")
  }

  // 当用户点击返回按钮时触发
  onBackPress() {
    console.warn("返回")
  }

  // 自定义组件的新实例后,在执行其build()函数之前执行
  aboutToDisappear() {
    console.warn("组件被销毁了")
  }

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}
bash 复制代码
09-05 22:16:29.093 16926-23064/? W 0FEFE/JsApp: 组件被实例化了
09-05 22:16:29.094 16926-23064/? W 0FEFE/JsApp: 页面被显示了
09-05 22:16:42.125 16926-23064/com.dake.myapplication W 0FEFE/JsApp: 页面被隐藏了
09-05 22:16:50.207 16926-23064/com.dake.myapplication W 0FEFE/JsApp: 页面被显示了
09-05 22:16:53.945 16926-23064/com.dake.myapplication W 0FEFE/JsApp: 返回
09-05 22:16:53.995 16926-23064/com.dake.myapplication W 0FEFE/JsApp: 组件被销毁了
相关推荐
2501_919749033 小时前
华为鸿蒙免费主题壁纸工具—小羊免费壁纸
华为·harmonyos·鸿蒙
java_nnnn3 小时前
JavaEE进阶-JavaScript初识
开发语言·前端·javascript·java-ee·ecmascript
变与不变8063 小时前
JSON基础详解
前端·javascript
梦想不只是梦与想3 小时前
华为AGC:应用留存分析
harmonyos·用户分析·行为分析·下载安装·用户留存分析
三掌柜6663 小时前
ArkWeb 手记 05|H5 文件上传怎么接
harmonyos
李洋-蛟龙腾飞公司4 小时前
HarmonyOS Dev Assistant安装基本流程与使用(一)
华为·harmonyos·harmonyos next
Sunny_GMF4 小时前
所见即所得编辑器原理实战:源码与渲染永不失真的三层一致性设计(Markdown/CodeMirror 装饰)
microsoft·编辑器·ai编程·harmonyos
就叫年华吧丶4 小时前
长文档点目录定位总是不准?一个 content-visibility + 平滑滚动引发的连环坑(Vue3 实战)
前端·javascript·算法·vue
fellow994 小时前
鸿蒙真机调试三板斧:Playwright 为什么驱动不了 Electron-on-鸿蒙
华为·electron·harmonyos
GitCode官方4 小时前
开源鸿蒙跨平台直播|Flutter HCPP 开源鸿蒙实践:让原生视图回到系统合成层
flutter·华为·harmonyos