鸿蒙开发笔记-Navigation基本使用

一、涉及的文件

  1. Index.ets 一级页面
  2. TestPage.ets 二级页面
  3. main_pages.json配置页面信息
  4. router_map.json新建的文件,文件名可以任取,但是要和module.json中的对应
  5. module.json在module字段下配置: “routerMap”: “$profile:router_map”,

在这里插入图片描述

二、main_page.json涉及代码

在这里插入图片描述

三、router_map.json涉及的配置

在这里插入图片描述

四、module.json的配置

在这里插入图片描述

五、一级页面代码

@Entry
@Component
struct Index {
  //路由栈实例
  navPathStack: NavPathStack = new NavPathStack()

  build() {
    //路由栈实例传给 Navigation
    Navigation(this.navPathStack) {
      Column() {
        Text('一级页面')
        Button('跳转到下一个页面')
          .onClick(() => {
            //10和20为传递给下一个页面的参数
            //TestPage 需要与 router_map.json中的name一致
            //this.navPathStack.pushPath({ name: 'TestPage', param: 10 })
            this.navPathStack.pushPathByName('TestPage', 20)
          })
      }
      .width('100%')
      .height('100%')
      .justifyContent(FlexAlign.Center)
    }
  }
}

六、二级页面代码

//myFunction 需要与 router_map.json 中的 buildFunction 一致
@Builder
export function myFunction() {
  TestPage()
}

@Entry
@Component
struct TestPage {
  //准备接收上个页面的任务栈实例
  navPathStack: NavPathStack = new NavPathStack()
  //接收传递来的参数
  @State index: number = 0;

  build() {
    NavDestination() {
      Column() {
        Text('二级页面')
        Text(`传递来的参数:${this.index}`)
        Button('返回')
          .onClick(() => {
            this.navPathStack.pop()
          })
      }
      .width('100%')
      .height('100%')
      .justifyContent(FlexAlign.Center)
    }.hideTitleBar(true) //隐藏NavDestination带的标题栏
    .onReady((context: NavDestinationContext) => {
      //接收上一级页面传递来的路由栈
      this.navPathStack = context.pathStack
      //获取参数
      this.index = context.pathInfo.param as number
    })
  }
}

七、效果图

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值