HO与OH差异之Navigation

在上一篇的内容中我们进一步的了解了Navigation的用法,但是既然写到这里了我就再来扩充一下有关Navigation的内容。

HarmonyOS与OpenHarmony之间有些写法与内容是有差异的,就比如Navigation的跳转。以下内容中HarmonyOS我都简称为HO,OpenHarmony简称为OH。

在HO中我们的Navigation跳转是通过路由池也就是NavPathStack可以直接进行跳转,但是假如我们做了一个项目迁移会发现,在OH中并没有这么的简单。

其中有两个方式进行路由跳转。

一:再定义一个NavPushHelper类型的参数并且将它new出来,因为他是一个类,其中我们可以传递我们在HO定义的路由池也就是我们定义的NavPathStack,将这个变量定义出来后只需要再次通过这个变量我们就可以实现在HO中路由跳转的方式。其实这种方式相当于一个中转站,将HO与OH的差异通过这个"中转站"进行了转化,示例如下:

less 复制代码
import { NavPushPathHelper } from '@ohos.atomicservice.NavPushPathHelper'

@Entry
@Component
struct NavigationPage1 {
  @Provide('NavPathStack') pathInfos: NavPathStack = new NavPathStack()
  @Provide("helper") helper: NavPushPathHelper = new NavPushPathHelper(this.pathInfos)

  build() {
    Navigation(this.pathInfos) {
      Text("我是Navi的1页面")
      Button("点击进行跳转")
        .onClick(() => {
          this.helper.pushPathByName("entry", "Navigation2", "")
        })
    }
    .height('100%')
    .width('100%')
  }
}
scss 复制代码
@Builder
function Navigation2Builder() {
  Navigation2()
}

@Component
struct Navigation2 {
  build() {
    NavDestination() {
      Text("我是页面2")
    }
  }
}

其中从图片中我们便可以看出已经是成功的跳转了,从我们的代码上来看似乎也就多写一步,不过确实是多谢一步,但是当我们用pushPathByName时,发现他所需的参数会和HO有所不同,他所需的第一个参数时我们的模块名称,也就是说它可以直接的传递模块名字直接进行跳转。如下示例:

scss 复制代码
@Builder
function IndexBuilder() {
  Index()
}

@Entry
@Component
struct Index {

  build() {
    NavDestination() {
      Text("我是Hsp包中的NavDestination")
    }
    .height('100%')
  }
}

这第一种方式的用法非常与HO相似

不过也别忘了在module.json5中绑定对应的路由池啥的。

Harmony OS NEXT / OpenHarmony API12

本次就暂时介绍这么多, 在下一篇内容中我会给大家介绍一下样式复用的修饰器

谢谢各位的观看,有错误不足的地方, 本人乐于接受各位的意见

相关推荐
云端漫步19879 小时前
HarmonyOS 互动卡片实战:快递卡片与睡眠卡片完整开发流程
华为·harmonyos
智塑未来10 小时前
鸿蒙6.1隐私安心加倍:加密分享、星盾防诈、应用锁三重保护,守护到位
华为·harmonyos
byte轻骑兵10 小时前
2026手机远程办公:向日葵、TeamViewer、ToDesk鸿蒙适配+传文件+AI审计功能对比
智能手机·harmonyos·todesk·teamviewer·手机远程办公
贾伟康11 小时前
【知律|06】HarmonyOS ArkTS 法律分类实战:让民法、劳动、消费等入口可维护
harmonyos·arkts·arkui·分类设计·多设备
梦想不只是梦与想1 天前
鸿蒙 测试工具:DevEco Testing(一)
测试工具·harmonyos·testing
大锅盖11 天前
Web 工单要调用相机,第一步不是打开取景框,而是建立能力门禁
前端·数码相机·harmonyos
贾伟康1 天前
【华夏二十四节气|07】HarmonyOS 6.0.2(22) ArkTS 节气搜索实战:多字段匹配与四态闭环
移动开发·harmonyos·arkts·arkui·本地搜索
大龄秃头程序员1 天前
Flutter 项目鸿蒙适配实战:从环境搭建到多环境打包全指南
harmonyos
贾伟康1 天前
【万能转换器|18】HarmonyOS ArkTS 权限与隐私实战:让 module.json5、功能说明和拒绝路径一致
移动开发·harmonyos·arkts·权限管理·隐私合规
贾伟康1 天前
【万能转换器|19】HarmonyOS ArkTS 回归测试实战:覆盖启动、空数据、异常输入和重复点击
软件测试·移动开发·harmonyos·arkts·回归测试