在HarmonyOS鸿蒙Next class中使用NavPathStack跳转页面的问题
在HarmonyOS鸿蒙Next class中使用NavPathStack跳转页面的问题
请问在class中应该怎样使用NavPathStack去进行页面跳转,在struct中能够正常跳转,在class中没反应,代码如下:
export class Testmanager{
private pageInfos: NavPathStack = new NavPathStack();
push() {
this.pageInfos.pushPathByName('List', null)
}
}
4 回复
在合适的时机将 pageInfos:NavPathStack
初始化并存到 AppStorage 中,通过全局状态进行访问。
更多关于在HarmonyOS鸿蒙Next class中使用NavPathStack跳转页面的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
class类中无法消费到NavPathStack。需要您在NewsNormalDetailController的images手动调用Navigation组件绑定的路由栈,从而完成正确的跳转 类初始化的时候可以将绑定的路由栈pageInfos作为参数传入
export class NewsNormalDetailController{
pageInfos:NavPathStack
constructor(pageInfos:NavPathStack) {
this.pageInfos = pageInfos
}
images(args: string) {
this.pageInfos.pushPathByName('Page01', null)
console.log('imageimageimageimage'+JSON.stringify(this.pageInfos))
}
}
在HarmonyOS Next中,NavPathStack通常需要与UI组件(如Navigation组件)绑定使用。在class中直接使用NavPathStack进行页面跳转无效的原因是因为缺少UI上下文。
正确的做法是:
修改后的示例代码:
export class Testmanager {
private pageInfos: NavPathStack = new NavPathStack();
getNavPathStack(): NavPathStack {
return this.pageInfos;
}
push() {
this.pageInfos.pushPathByName('List', null);
}
}
// 在struct中使用
@Entry
@Component
struct MainPage {
private testMgr: Testmanager = new Testmanager();
build() {
Navigation(this.testMgr.getNavPathStack()) {
// 页面内容
}
}
}
注意:NavPathStack必须与Navigation组件配合使用才能实现页面导航效果。