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