HarmonyOS 无感监听中navigationId与navDestinationId获取的问题

在使用无感监听过程中遇到了以下几个问题:

1、如果navigation没有设置id,则queryNavigationInfo中取到的navigationId就是空,导致监听的对象错误,系统侧是不是应该默认给navigation一个id,用户如果有设置再覆盖它?id不是必选字段,外面维护navigation的业务很可能就没设置,无感监听不应该依赖所有人都显式地设置了这个id。

2、在自定义组件的parent/grandparent中嵌套了多级navDestination的情况下,queryNavDestinationInfo能获取到真正push到navigation里的navDestination吗?如果获取不到,无感监听的流程就走不通了,如下面的示例代码,在observe回调中会在校验navDestinationId处直接return。

this.navDestinationId = this.queryNavDestinationInfo()?.navDestinationId;
this.navigationId = this.queryNavigationInfo()?.navigationId;
if (this.navDestinationId && this.navigationId) {
  uiObserver.on('navDestinationUpdate', { navigationId: this.navigationId }, (info) => {
    if (info.navigationId != this.navigationId || info.navDestinationId != this.navDestinationId) {
      return;
    }
    if (info.state == uiObserver.NavDestinationState.ON_WILL_SHOW) {
      this.onShow();
    } else if (info.state == uiObserver.NavDestinationState.ON_HIDDEN) {
      this.onHide();
    }
  });
}
HarmonyOS
2025-01-09 17:17:03
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

1、navigation组件没有默认的ID,规格如此。

2、queryNavDestinationinfo接口只会从自定义组件向上查找,查找到第一个navdestination就返回了。使用说明可参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-custom-component-api-V5#querynavdestinationinfo

分享
微博
QQ
微信
回复
2025-01-09 19:05:10
相关问题
HarmonyOS获取设备标识
755浏览 • 1回复 待解决
HarmonyOS 转场动画推荐方案
410浏览 • 1回复 待解决
ArkUIicon资源锯齿严重
2264浏览 • 1回复 待解决
HarmonyOS 获取Resourcevalue问题
879浏览 • 1回复 待解决
如何减轻icon资源锯齿
2034浏览 • 1回复 待解决