HarmonyOS NavPathStack跳转失败:Home页面未在build()中声明Navigation()会导致问题吗?

Navigation -> Stack -> Tabs -> TabContent里包含页面Home,跳转不生效问题。但是Home的build里没有写Navigation()。会导致无法跳转吗?

// HomePage.ets

// 声明的
@Provide('NavPathStack') pageStack: NavPathStack = new NavPathStack();

// 调用跳转的
this.pageStack.pushPathByName('RouteList', "测试", (popInfo) => {
     console.info('Pop page name is: ' + popInfo.info.name + ', result: ' + JSON.stringify(popInfo.result));
});

解决跳转问题,涉及导航的页面是否都需要在build()里用Navigation()包装才会生效呢?

阅读 618
1 个回答

一般不会,“Navigation 只需要在上层做一次”,你 Home 作为内容页放在 Navigation 里面,本身不写 Navigation 也能正常显示/交互;真正导致“跳转不生效”的常见原因反而是你用的跳转方式跟 Navigation 这套不是一条链路——比如你页面里用的是 router.pushUrl,但外面又想靠 Navigation 的 NavPathStack 管页面栈;或者你 push 的目标没按 NavDestination/路由规则注册,结果 push 了但没落到可展示的 destination。我的建议是:确定你到底走哪套(router 栈 或 NavPathStack),如果走 Navigation,就把 push/pop 都收口到同一个 navPathStack 上(别混用),同时保证要跳的页面是 Navigation 能识别的目的页;Home 里再额外写一个 Navigation,反而容易把上下文切断变成“嵌套导航”,更不好排查。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进