页面路由是App研发过程常用的能力,是App运行的基础能力,支持页面之间的切换。
在鸿蒙系统中提供NavPathStack组件,支持页面路由导航。
下面的代码中实现子页面返回父页面时携带参数的关键部分代码。
父页面(Index.ets)文件中的实现
struct Index {
pageStack: NavPathStack = new NavPathStack();
build() {
Navigation(this.pageStack) {
Column() {
// 父视图实现,打开子视图,并接收子视图返回时携带的参数
Button('nav pushPath SecondPage_Nav recv result')
.onClick(() => {
// this.pageStack是NavPathStack对象
this.pageStack.pushPathByName('secondPageNav', "", (data) => {
// data是收到的返回的结果(可自定义格式,本示例中是个Record)
console.log("recv result " + data["message"]);
});
})
}
}
.hideTitleBar(true)
}
}
子页面(SecondPage_Nav.ets)文件中的实现
struct SecondPage_Nav {
pageStack: NavPathStack = new NavPathStack();
build() {
NavDestination() {
Button('nav pop Parent have result')
.onClick(() => {
// param是参数Record<string,string>类型
let param:Record<string,string> = { "message": 'SecondPage' }
// 携带参数
this.pageStack.pop(param)
})
}
.title('SecondPage_Nav')
.onReady((context: NavDestinationContext) => {
this.pageStack = context.pathStack;
})
}
}