02Navigation页面路由

在前面的文章中我们介绍了navigation的使用接下来我们体验一下如何使用子页面

在entry页面中创建页面控制器

在子页面我们也需要传入控制器进行页面的操作我们使用provider进行注入

我们获取路由栈的方式有三种甚至更多 可以在下面补充 先使用provider

ts 复制代码
@Entry
@ComponentV2
struct Index {
  // 控制器
@Provider('nav') nav:NavPathStack = new NavPathStack()
  build() {
    Navigation(this.nav) {}
  }
}
创建子页面

为每个NavDestination声明对外的实例化方法,如代码中的helloBuilder,执行该方法会创建一个hello的自定义组件,该组件就是一个Navigation的子页面。

ts 复制代码
@Builder
function helloBuilder(){
  hello()
}

@ComponentV2
export struct hello{
  build() {
    NavDestination(){
      Text("HelloView")
    }
       .title("Hello")
      //  当然NavDestination也支持指定title
  }
}
配置路由表

第一次需要在models.json5配置

json 复制代码
{
  "routerMap": "$profile:router_map"
}

创建文件并且配置如下

src/main/resources/base/profile/router_map.json

json 复制代码
{
  "routerMap": [
    {
      "pageSourceFile": "src/main/ets/pages/hello.ets", // 源码所在路径
      "name": "hello", // 路由页面的唯一标识符
      "buildFunction": "helloBuilder" //页面的实例化方法名称
    }
  ]
}
感受一下跳转

在entry页面加入如下代码会跳转到hello页面

ts 复制代码
Button("to hello").onClick((event: ClickEvent) => {
  this.nav.pushPathByName("hello", null);
});

子页面改造如下

ts 复制代码
@Builder
function helloBuilder(){
  hello()
}

@ComponentV2
export struct hello{
    //获取路由栈控制器
  @Consumer('nav') nav:NavPathStack = new NavPathStack()
  build() {
    NavDestination(){
      Text("HelloView")
      Button('pop')
        .onClick((event: ClickEvent) => {
            // 调用返回栈函数
          this.nav.pop()
      })
    }
  }
}

注意 如果没有传入页面栈控制器子路由则无法返回

相关推荐
xq952713 小时前
ArkTS Component Generator 插件横空出世
harmonyos
Fate_I_C14 小时前
Capacitor 插件鸿蒙化实战:@capacitor/device 从安装到模拟器验证全记录
华为·harmonyos
2501_9197490319 小时前
华为鸿蒙免费记账与生活统计APP—小羊统计
华为·生活·harmonyos·鸿蒙
Fate_I_C19 小时前
Capacitor 应用鸿蒙化实战:用 hionic 把 React 应用跑在 OpenHarmony 上
react.js·华为·harmonyos
SuperHeroWu719 小时前
华为云码道接入 DevEco CLI 鸿蒙应用开发AICoding
华为·华为云·harmonyos
ChinaDragonDreamer20 小时前
HarmonyOS:User Authentication Kit简介
华为·harmonyos
m0_7381858220 小时前
Flutter 鸿蒙化实战:qrcode_flutter 适配 OpenHarmony,二维码生成与识别
数码相机·flutter·华为·harmonyos·鸿蒙
万物智能信息科技20 小时前
血氧心跳传感器MAX30100芯片驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
人工智能·驱动开发·华为·开源·harmonyos·鸿蒙
老陈说编程20 小时前
1. 鸿蒙 (HarmonyOS) 2012 至 2026 年的发展历程
分布式·华为·个人开发·harmonyos·鸿蒙·鸿蒙系统·程序员创富
m0_7381858221 小时前
Flutter 鸿蒙化实战:open_app_settings 适配 OpenHarmony,一键跳转系统设置
flutter·华为·harmonyos·鸿蒙