页面路由是App研发过程常用的能力,是App运行的基础能力,支持页面之间的切换。
在鸿蒙系统中提供NavPathStack组件,支持页面路由导航。
下面的代码中实现打开子页面时父页面向子页面传参数,仅是关键部分代码。
父页面(Index.ets)文件中的实现
struct Index {
pageStack: NavPathStack = new NavPathStack();
build() {
Navigation(this.pageStack) {
Column() {
// 父视图实现,打开子视图,并传参数
Button('nav pushPath SecondPage_Nav have param')
.onClick(() => {
// this.pageStack是NavPathStack对象
this.pageStack.pushPathByName('secondPageNav', "Index");
})
}
}
.hideTitleBar(true)
}
}
子页面(SecondPage_Nav.ets)文件中的实现
struct SecondPage_Nav {
pageStack: NavPathStack = new NavPathStack();
build() {
NavDestination() {
}
.title('SecondPage_Nav')
.onReady((context: NavDestinationContext) => {
this.pageStack = context.pathStack;
// 方案1:context.pathInfo.param = “Index”
if (context.pathInfo.param) {
console.log(context.pathInfo.param as string)
}
// 方案2:this.pageStack.getParamByName("secondPageNav")[0] = “Index”
// 但要注意,如有多个secondPageNav页面实例时[0]中的0需要调整。
if (this.pageStack.getParamByName("secondPageNav")[0]) {
console.log(this.pageStack.getParamByName("secondPageNav")[0] as string)
}
})
}
}