HarmonyOS 鸿蒙Next Navigation内容页如何响应onPageShow/hide事件

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

HarmonyOS 鸿蒙Next Navigation内容页如何响应onPageShow/hide事件

HarmonyOS Navigation内容页如何响应onPageShow/hide事件

2 回复

Navigation由NavDestination组件组成页面其页面路由,在实现过程中NavDestination组件会被封装在一个自定义组件中,从而作为一个页面被路由栈使用。
当前支持的生命周期函数:aboutToAppear->onWillAppear->->onReady->onAppear->onWillShow->onShown->onWillHide->onHidden->onWillDisappear->onDisappear->aboutToDisappear,

其中aboutToAppear和aboutToDisappear只在第一次的时候执行一次,其余的生命周期函数都在NavDestination下,onPageShow/hide对应onShown和onHidden 参考如下demo:

[@Entry](/user/Entry)
[@Component](/user/Component)
struct NavExample {
aboutToAppear(): void {
}

aboutToDisappear(): void {
}

build() {
NavDestination() {
}.onShown(() => {})
.onHidden(() => {})
}
}

在HarmonyOS鸿蒙Next中,Navigation内容页响应onPageShow/hide事件的方式如下:

onPageShow、onPageHide等生命周期回调函数,仅对@Entry装饰的自定义组件生效。对于NavDestination定义的子页面,由于它们已有Navigation作为入口,语义上不建议额外设置@Entry作为入口标记。如果非要在NavDestination上使用类似功能,可通过设置onShown、onHidden等属性来实现相应的回调。

另外,若想在非@Entry修饰的页面上模拟onPageShow/hide效果,可考虑以下方法:

  • 监听页面的onActive()和onInactive()生命周期方法。页面被激活(显示)时,onActive()会被调用;页面被隐藏或关闭时,onInactive()会被调用,这可模拟onPageShow()和onPageHide()的效果。
  • 监听Navigation的onNavBarStateChange()事件,在回调中判断页面显示隐藏状态。

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

回到顶部