HarmonyOS 鸿蒙Next组件生命周期函数有哪些如何使用?生命周期管理指南

HarmonyOS 鸿蒙Next组件生命周期函数有哪些如何使用?生命周期管理指南 HarmonyOS 5.0,DevEco Studio 5.0

  • 不清楚组件有哪些生命周期函数
  • 不知道在哪个生命周期做初始化操作
  • 希望了解页面和组件生命周期的区别

希望了解HarmonyOS组件生命周期函数的完整说明和使用场景

3 回复

1. 页面生命周期(@Entry组件)

arkts

[@Entry](/user/Entry)
@Component
struct PageLifecycle {
  @State message: string = ''

  // 1. 组件创建时调用(最先执行)
  aboutToAppear(): void {
    console.info('aboutToAppear: 组件即将出现')
    // 适合:初始化数据、网络请求、订阅事件
    this.loadData()
  }

  // 2. 页面显示时调用
  onPageShow(): void {
    console.info('onPageShow: 页面显示')
    // 适合:恢复定时器、刷新数据
  }

  // 3. 页面隐藏时调用
  onPageHide(): void {
    console.info('onPageHide: 页面隐藏')
    // 适合:暂停定时器、保存状态
  }

  // 4. 返回按钮点击时调用
  onBackPress(): boolean {
    console.info('onBackPress: 返回按钮被点击')
    // 返回true表示自己处理,不执行默认返回
    // 返回false表示执行默认返回行为
    return false
  }

  // 5. 组件销毁时调用(最后执行)
  aboutToDisappear(): void {
    console.info('aboutToDisappear: 组件即将销毁')
    // 适合:清理定时器、取消订阅、释放资源
  }

  async loadData(): Promise<void> {
    // 加载数据
  }

  build() {
    Column() {
      Text(this.message)
    }
  }
}

2. 普通组件生命周期

arkts

@Component
struct ChildComponent {
  @Prop title: string = ''

  // 组件创建时
  aboutToAppear(): void {
    console.info('子组件 aboutToAppear')
  }

  // 组件销毁时
  aboutToDisappear(): void {
    console.info('子组件 aboutToDisappear')
  }

  // 注意:普通组件没有 onPageShow/onPageHide

  build() {
    Text(this.title)
  }
}

3. 生命周期执行顺序

页面进入:
1. aboutToAppear (父组件)
2. aboutToAppear (子组件)
3. build (渲染)
4. onPageShow

页面离开:
1. onPageHide
2. aboutToDisappear (子组件)
3. aboutToDisappear (父组件)

4. 常见使用场景

arkts

[@Entry](/user/Entry)
@Component
struct ExamplePage {
  private timer: number = -1

  aboutToAppear(): void {
    // ✅ 初始化数据
    this.initData()
    // ✅ 网络请求
    this.fetchData()
    // ✅ 注册监听
    this.registerListener()
  }

  onPageShow(): void {
    // ✅ 启动定时器
    this.timer = setInterval(() => {
      this.refreshData()
    }, 5000)
  }

  onPageHide(): void {
    // ✅ 暂停定时器
    if (this.timer !== -1) {
      clearInterval(this.timer)
    }
  }

  aboutToDisappear(): void {
    // ✅ 清理定时器
    if (this.timer !== -1) {
      clearInterval(this.timer)
    }
    // ✅ 取消订阅
    this.unregisterListener()
    // ✅ 释放资源
    this.releaseResources()
  }

  onBackPress(): boolean {
    // ✅ 拦截返回,显示确认弹窗
    if (this.hasUnsavedChanges) {
      this.showExitConfirm()
      return true // 阻止默认返回
    }
    return false // 执行默认返回
  }
}

更多关于HarmonyOS 鸿蒙Next组件生命周期函数有哪些如何使用?生命周期管理指南的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS Next组件生命周期函数包括aboutToAppear、onPageShow、aboutToDisappear、onPageHide。aboutToAppear在组件即将出现时调用,用于初始化数据;onPageShow在页面显示时触发;aboutToDisappear在组件即将销毁前调用,用于清理资源;onPageHide在页面隐藏时触发。开发者需在对应组件中重写这些函数以实现特定逻辑。

在HarmonyOS Next中,组件的生命周期函数是开发的核心,用于管理组件的创建、更新和销毁。以下是主要生命周期函数及其使用场景:

主要生命周期函数

  1. aboutToAppear

    • 调用时机:组件即将出现时(构建完成,即将显示)。
    • 使用场景:初始化数据、订阅事件、启动动画。
    • 示例
      aboutToAppear(): void {
        this.loadData(); // 初始化数据
      }
      
  2. aboutToDisappear

    • 调用时机:组件即将消失时(页面跳转或组件销毁前)。
    • 使用场景:取消订阅、释放资源、保存状态。
    • 示例
      aboutToDisappear(): void {
        this.eventBus.off(); // 取消事件订阅
      }
      
  3. onPageShow

    • 调用时机:页面显示时(包括首次打开和从后台返回)。
    • 使用场景:恢复动画、刷新数据。
    • 注意:仅页面组件可用。
  4. onPageHide

    • 调用时机:页面隐藏时(跳转其他页面或进入后台)。
    • 使用场景:暂停动画、保存临时数据。
    • 注意:仅页面组件可用。
  5. onBackPress

    • 调用时机:用户点击返回键时。
    • 使用场景:拦截返回操作(如确认退出)。
    • 返回 true 可阻止默认返回行为。

页面与组件生命周期区别

  • 页面组件:拥有完整生命周期(包括 onPageShowonPageHide),通常对应一个路由。
  • 普通组件:仅支持 aboutToAppearaboutToDisappear,用于自身状态管理。

使用建议

  • 初始化操作:在 aboutToAppear 中执行数据加载、网络请求。
  • 资源释放:在 aboutToDisappear 中清理定时器、取消订阅。
  • 页面级管理:使用 onPageShow/onPageHide 处理页面可见性相关逻辑。

示例代码(页面组件)

@Entry
@Component
struct MyPage {
  aboutToAppear(): void {
    console.log('页面即将显示');
  }

  onPageShow(): void {
    console.log('页面已显示');
  }

  onPageHide(): void {
    console.log('页面已隐藏');
  }

  aboutToDisappear(): void {
    console.log('页面即将销毁');
  }
}

通过合理使用生命周期函数,可以确保资源高效管理和用户体验流畅。

回到顶部