【鸿蒙】【毛豆工具集】【页面路由导航】子页面返回父页面时携带参数

27 阅读1分钟

页面路由是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;
    })
  }
}