鸿蒙HarmonyOS开发:Navigation路由导航功能和实践例子解析

在这里插入图片描述

代码示例:

在HarmonyOS开发中,Navigation路由导航功能是实现页面间跳转的核心机制。以下是Navigation路由导航功能的详细例子和实践指南:

1. Navigation组件基础

Navigation组件是HarmonyOS中用于页面路由导航的根视图容器,支持单栏(Stack)、分栏(Split)和自适应(Auto)三种显示模式。它适用于模块内和跨模块的路由切换,并能自动适配不同尺寸的设备显示。

2. 设置页面显示模式

Navigation组件通过mode属性设置页面的显示模式:

  • 自适应模式:默认模式,当页面宽度大于等于一定阈值时,采用分栏模式,反之采用单栏模式。
    Navigation() {  }.mode(NavigationMode.Auto)
    
  • 单页面模式
    Navigation() {  }.mode(NavigationMode.Stack)
    
  • 分栏模式
    Navigation() {  }.mode(NavigationMode.Split)
    

3. 路由操作

Navigation路由操作基于页面栈NavPathStack提供的方法进行。每个Navigation都需要创建并传入一个NavPathStack对象,用于管理页面。

页面跳转
  • 普通跳转
    this.pageStack.pushPath({ name: "PageOne", param: "PageOne Param" })
    
  • 带返回回调的跳转
    this.pageStack.pushPathByName('PageOne', "PageOne Param", (popInfo) => { console.log('Pop page name is: ' + popInfo.info.name + ', result: ' + JSON.stringify(popInfo.result))});
    
  • 带错误码的跳转
    this.pageStack.pushDestination({name: "PageOne", param: "PageOne Param"}).catch((error: BusinessError) => { console.error(`Push destination failed, error code = ${error.code}, error.message = ${error.message}.`); });
    

4. 跨包动态路由

动态路由设计旨在解决多个模块间复用相同的业务逻辑,实现各业务模块间的解耦,并支持路由功能的扩展与整合。

  • 系统路由表:从API version 12开始,Navigation支持使用系统路由表的方式进行动态路由。各业务模块中需要独立配置router_map.json文件,在触发路由跳转时,系统会自动完成路由模块的动态加载、页面组件构建,并完成路由跳转。

    {
      "module": {
        "routerMap": "$profile:route_map"
      }
    }
    
  • 自定义路由表:开发者可以通过自定义路由表的方式来实现跨包动态路由,具体实现方法请参考Navigation自定义动态路由示例。

5. 实践例子

以下是一个简单的Navigation路由导航实践例子:

@Entry@Component
struct Index {
  pageStack: NavPathStack = new NavPathStack();
  build() {
    Navigation(this.pageStack) {
      Column() {
        Button('Push PageOne').onClick(() => {
          this.pageStack.pushPath({ name: 'pageOne' });
        });
      }
    }.title("Navigation").mode(NavigationMode.Stack);
  }
}

在这个例子中,我们创建了一个名为Index的页面,其中包含了一个按钮,点击该按钮会触发页面跳转到名为pageOne的页面。

以上是Navigation路由导航功能和实践的详细例子,希望这能帮助您更好地理解和使用HarmonyOS的Navigation组件进行页面路由导航。

喜欢本文,请点赞、收藏和关注!
如能打赏、那更好了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乔丹搞IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值