HarmonyOS 鸿蒙Next 在tab下的非entry的ui组件如何感知是否已显示

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

HarmonyOS 鸿蒙Next 在tab下的非entry的ui组件如何感知是否已显示

在tab content内有多个自定义component,这些页面希望能感知到切到当前页面和切离  是否有类似onpageshow的系统方法可以感知呢

2 回复
看下onVisibleAreaChange回调是否满足您的场景

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-component-visible-area-change-event-0000001815767708

Tabs({barPosition: BarPosition.End,controller: this.tabsController}){
        TabContent(){
          Component1()
            .onVisibleAreaChange([0.0, 1.0], (isVisible: boolean, currentRatio: number) => {
              console.info('Test Text isVisible: ' + isVisible + ', currentRatio:' + currentRatio)
              if (isVisible && currentRatio >= 1.0) {
                console.info('Test Text is fully visible. currentRatio:' + currentRatio)
              }
              if (!isVisible && currentRatio <= 0.0) {
                console.info('Test Text is completely invisible.')
              }
            })
        }
        .tabBar(this.TabBuilder('首页', 0, $r('app.media.ic_home_focus'), $r('app.media.ic_home_normal')))
        TabContent(){
          Component2()
        }
        .tabBar(this.TabBuilder('购物车', 1, $r('app.media.ic_cart_focus'), $r('app.media.ic_cart_normal')))
    }
  } 

写在Component1上,当tab1切到tab2,tab1隐藏,第二个if会执行

在HarmonyOS鸿蒙Next中,对于tab下的非entry的UI组件,可以通过以下几种方式感知其是否已显示:

  1. 利用onVisibleAreaChange回调

    • HarmonyOS提供了onVisibleAreaChange回调方法,可用于感知UI组件的可见区域变化。当组件的可见区域发生变化时,该方法会被触发,从而可以判断组件是否已显示。
  2. 生命周期方法

    • 组件在显示或隐藏时,其生命周期方法aboutToAppear()和aboutToDisappear()会相应生效。通过重写这些方法,可以在组件显示或隐藏时执行特定操作,从而间接感知组件的显示状态。
  3. 全局变量或状态管理

    • 在某些复杂场景中,可能需要通过全局变量或状态管理(如ViewModel、LiveData等)来跟踪组件的显示状态。这种方法适用于需要跨组件或跨页面共享显示状态的情况。

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

回到顶部