HarmonyOS Navigation页面出栈时,onShown是否执行

使用Navigation和NavDestination路由,页面跳转都没问题,但是页面出栈时无法监听页面的展示。

HarmonyOS
2024-12-25 14:01:46
1173浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
superinsect

可以通uiObserver.on(‘navDestinationUpdate’,func)来进行监听,文档地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-navigation-navigation-V5#%E9%A1%B5%E9%9D%A2%E7%9B%91%E5%90%AC%E5%92%8C%E6%9F%A5%E8%AF%A2

通过eventHub传递事件,文档地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-application-eventhub-V5

示例代码如下:

// index.ets
eventFunc() {
  console.log('eventFunc is called');
}

aboutToAppear() {
  if (!this.entryHapRouter) {
    this.entryHapRouter = new NavPathStack();
  }
  console.log("====Index=aboutToAppear=")
  let context = getContext() as common.UIAbilityContext;
  context.eventHub.on('myEvent', this.eventFunc);
  RouterModule.createRouter(RouterNameConstants.ENTRY_HAP, this.entryHapRouter);
};
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
// EntryAbility.ets
windowStage.getMainWindow((err: BusinessError, data) => {
  let windowClass = data;
  let uiContext: UIContext = windowClass.getUIContext();

  let uiObserver: UIObserver = uiContext.getUIObserver();
  uiObserver.on("navDestinationUpdate", (info) => {
    // NavDestinationState.ON_SHOWN = 0, NavDestinationState.ON_HIDE = 1
    if (info.state == 0) {
      // NavDestination组件显示时操作
      console.info('page ON_SHOWN:' + info.name.toString());
      console.info('page ON_SHOW:' + info.navDestinationId.toString());
    } else if (info.state == 1) {
      console.info('page ON_HiDDEN:' + info.name.toString());
      console.info('page ON_HiDDEN:' + info.navDestinationId.toString());
      this.context.eventHub.emit('myEvent');
    }
  })
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
分享
微博
QQ
微信
回复
2024-12-25 16:18:09


相关问题
HarmonyOS NavPathStack问题
1115浏览 • 1回复 待解决
HarmonyOS 页面关闭问题
989浏览 • 1回复 待解决
如何在navigation跳转页面返回传参
2778浏览 • 1回复 待解决
HarmonyOS router如何清除指定页面
591浏览 • 1回复 待解决