【鸿蒙】【毛豆工具集】【页面路由导航】打开子页面时父页面向子页面传参数(2种方式)

26 阅读1分钟

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