HarmonyOS 鸿蒙Next TabContent里的组件的生命周期

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next TabContent里的组件的生命周期

首页是3个Tab分别是首页、咨询、我的。当第一次点击我的时有触发aboutToAppear,但在我的页面跳到登录页,再返回时,只触发了MainPage的onPageShow事件。 请问我的组件怎样可以感知,返回来了。跳转页面返回和按Home切后台返回,也只是MainPage有触发onPageHide和onPageShow 在官网找到了这个https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-page-custom-components-lifecycle-0000001820879573,但这里好像没有给出答案。


更多关于HarmonyOS 鸿蒙Next TabContent里的组件的生命周期的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
可以通过[@State](/user/State)和 [@Link](/user/Link) [@Watch](/user/Watch)结合对页面的显隐做监测,代码如下:

```

1.index.ets

import { FirstPage } from './FirstPage'

@Entry

@Component

struct Index {

  mainPageState: boolean | undefined

  @State fontColor: string = ‘#182431’

  @State selectedFontColor: string = ‘#007DFF’

  @State currentIndex: number = 0

  private controller: TabsController = new TabsController()

  @State mainPageChange:number = 0

  @Builder tabBuilder(index: number, name: string) {

    Column() {

      Text(name)

        .fontColor(this.currentIndex === index ? this.selectedFontColor : this.fontColor)

        .fontSize(16)

        .fontWeight(this.currentIndex === index ? 500 : 400)

        .lineHeight(22)

        .margin({ top: 17, bottom: 7 })

      Divider()

        .strokeWidth(2)

        .color(’#007DFF’)

        .opacity(this.currentIndex === index ? 1 : 0)

    }.width(‘100%’)

  }

  build() {

    Column() {

      Tabs({ barPosition: BarPosition.End, index: this.currentIndex, controller: this.controller }) {

        TabContent() {

          Column().width(‘100%’).height(‘100%’).backgroundColor(’#FFBF00’)

        }.tabBar(this.tabBuilder(0, ‘首页’))

        TabContent() {

          Column().width(‘100%’).height(‘100%’).backgroundColor(’#007DFF’)

        }.tabBar(this.tabBuilder(1, ‘咨询’))

        TabContent() {

          FirstPage({mainPageChange:this.mainPageChange}).width(‘100%’).height(‘100%’).backgroundColor(’#00CB87’)

        }.tabBar(this.tabBuilder(2, ‘我的’))

      }

      .vertical(false)

      .barMode(BarMode.Fixed)

      .barWidth(‘100%’)

      .barHeight(56)

      .animationDuration(400)

      .onChange((index: number) => {

        this.currentIndex = index

        if (index == 2) {

          console.log(‘展示了我的页面’)

          this.mainPageChange = new Date().getTime();

        }

      })

      .width(‘100%’)

      .height(‘100%’)

      // .margin({ top: 52 })

      .backgroundColor(’#F1F3F5’)

    }.width(‘100%’)

  }

  onPageShow(): void {

    console.log(‘index— onPageShow’)

    // this.mainPageState = true

    this.mainPageChange = new Date().getTime();

  }

  onPageHide(): void {

    console.log(‘index— onPageHide’)

    this.mainPageState = false

  }

}

DetailPage 

import { Notification } from ‘@kit.NotificationKit’;

import { router } from ‘@kit.ArkUI’;

@Entry

@Component

struct DetailPage {

  @State message: string = ‘详情’;

  build() {

    Row() {

      Column() {

        Text(this.message)

          .fontSize(50)

          .fontWeight(FontWeight.Bold)

      }

      .width(‘100%’)

    }

    .height(‘100%’)

  }

  onPageShow(): void {

  }

  onPageHide(): void {

    console.log(‘detailPAGE— onPageHide’)

  }

  onBackPress(): boolean | void {

    console.log(‘detailPAGE— onBackPress’)

  }

}

 

更多关于HarmonyOS 鸿蒙Next TabContent里的组件的生命周期的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,Next TabContent里的组件生命周期主要包括以下几个阶段:

  1. onInitialized():组件初始化时调用,用于进行组件的初始设置。

  2. onAttachedToWindow():当组件被附加到窗口时调用,表示组件已经可见,可以进行UI渲染等操作。

  3. onActive():当组件处于激活状态时调用,此时组件可以接受用户交互。在TabContent中,当切换到该组件所在的Tab时,该组件会被激活。

  4. onInactive():当组件失去激活状态时调用,此时组件不再接受用户交互。在TabContent中,当切换到其他Tab时,该组件会失去激活状态。

  5. onDetachedFromWindow():当组件从窗口上移除时调用,表示组件已经不可见,此时可以进行资源释放等操作。

  6. onDestroy():组件销毁时调用,用于进行清理工作,如释放资源等。

这些生命周期方法帮助开发者在组件的不同状态下执行相应的逻辑,确保组件能够正确地显示和交互。

需要注意的是,不同版本的HarmonyOS系统以及不同的组件类型(如Page、AbilitySlice等)可能会有细微的生命周期差异。开发者应根据具体需求和环境进行测试和调整。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部