当前位置: 首页 > article >正文

鸿蒙项目用的router如何迁移至Navgation

在HarmonyOS开发中,如果你的项目当前使用的是router进行页面导航,并希望迁移到推荐使用的navgation模式,那么你需要了解两者之间的主要区别。

HarmonyOS推荐使用navgation机制来处理页面间的导航,因为它提供了更强大和灵活的方式来管理应用内部的页面跳转和状态管理。

步骤

1、更新依赖

确保项目依赖已经更新到最新版本。以包含最新的navgation功能支持。可能涉及到更新SDK版本或添加特定的库依赖。

2、修改配置文件

在config.json中,确认所有Abilities都正确配置了必要的信息,包括启动模式(launchType)等。

如果之前有自定义的路由配置,现在需要转换为navgation所需要的形式。

3、替换路由跳转逻辑

将原有的router.push()或类似的跳转方法替换为navgation提供的方法。

router实现方式

在发起跳转的页面(例如 FirstPage.ets)中:

在目标页面(例如 SecondPage.ets)中接收参数:

navigation 实现方式

在发起跳转的页面(例如 FirstPage.ets)中:

在目标页面(例如 SecondPage.ets)中接收参数:

 navigation 实现方式(router 不支持直接获取返回结果)

在发起跳转的页面(例如 FirstPage.ets)中:

import { NavigationService } from '@ohos.navigation';
@Entry
@Component
struct FirstPage {
  private navigationService = NavigationService.getInstance();
  private resultMessage: string = '';
  async handleNavigate() {
    try {
      const result = await this.navigationService.pushForResult({
        name: 'pages/SecondPage',
        params: {
          message: 'Hello from FirstPage!'
        }
      });
      this.resultMessage = result;
    } catch (error) {
      console.error('Navigation error: ' + error);
    }
  }
  build() {
    Column({ space: 50 }) {
      Button('Navigate to SecondPage and get result')
        .onClick(() => {
          this.handleNavigate();
        })
      Text(`Received result: ${this.resultMessage}`)
    }
    .width('100%')
  }
}

在目标页面(例如 SecondPage.ets)中设置返回结果

import { NavigationService } from '@ohos.navigation';

@Entry
@Component
struct SecondPage {
  private navigationService = NavigationService.getInstance();

  build() {
    Column({ space: 50 }) {
      Button('Go back and send result')
        .onClick(() => {
          this.navigationService.setResult('Result from SecondPage');
          this.navigationService.pop();
        })
    }
    .width('100%')
  }
}

不完善,待更新


http://www.kler.cn/a/549042.html

相关文章:

  • 基于SpringBoot+Vue的智慧校园管理系统设计和实现(源码+文档+部署讲解)
  • 几款dxf文件转Gcode的开源软件
  • K8S下载离线安装包所需文件
  • HTML4
  • 权谋场景人物引入
  • 架构——Nginx功能、职责、原理、配置示例、应用场景
  • 条件变量和信号量的区别
  • Cursor笔记
  • 七、Java常用API(2)
  • 使用 DeepSeek 生成商城流程图
  • Flutter 打包报错:Execution failed for task ‘:flutter_plugin_android_lifecycle的解决办法
  • AI、Java、C++、C#等技术学习资源链接汇总
  • HarmonyOS NEXT网络状态监听HTTP和RCP请求网络
  • java集合一张图理解
  • 蓝桥杯 Java B 组之简单动态规划(爬楼梯、斐波那契数列)
  • 大数据SQL调优专题——Hive执行原理
  • 设计模式与面向对象的 11 个致命陷阱
  • Java语言介绍
  • 四、敏捷方法论:敏捷开发中的关键实践
  • Python爬虫入门:从数据海洋中获取宝藏