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

HO与OH差异之Navigation

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

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

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

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

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

typescript
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%')
  }
}

typescript
@Builder
function Navigation2Builder() {
  Navigation2()
}

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

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

typescript
@Builder
function IndexBuilder() {
  Index()
}

@Entry
@Component
struct Index {

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

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

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

Harmony OS  NEXT  / OpenHarmony  API12

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

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

相关文章:

  • GitHub供应链攻击事件:Coinbase遭袭,218个仓库暴露,CI/CD密钥泄露
  • jangow靶机攻略
  • Vue.js 过滤器(Filters):简化文本格式化的利器
  • 第十四届蓝桥杯省赛电子类单片机学习记录(客观题)
  • 2025 JMeter平替的五款工具
  • 中间件框架漏洞攻略
  • 室分覆盖(室内分布系统)详解
  • 二叉搜索树的最近公共祖先 删除二叉搜索树中的节点 修剪二叉搜索树(Java)
  • ClickHouse怎么学习
  • 数据库—sql语法基础
  • 健身房管理系统(源码+数据库)
  • 《HarmonyOS Next自定义TabBar页签凸起和凹陷案例与代码》
  • chatshare.xyz和chatshare.biz的差别和渠道!
  • 【踩坑日记】IDEA的ctrl+r快捷键冲突无法使用
  • 前端如何用canvas来做电影院选票功能
  • K8S学习之基础四十七:k8s中部署fluentd
  • Java多线程与高并发专题——如何利用 CompletableFuture 解决“聚合打车服务平台”的问题?
  • 2.4 隐函数及由参数方程确定的函数求导
  • C#中值类型与引用类型是直观使用示例
  • __init__.py
  • 新希望一季度归母净利润4.45亿,上年同期为-19.34亿
  • 直播电商行业代表呼吁:携手并肩伸出援手助力外贸企业攻坚克难
  • 走访中广核风电基地:701台风机如何乘风化电,点亮3000万人绿色生活
  • 早睡1小时,变化有多惊人?第一个就没想到
  • 第1现场|无军用物资!伊朗港口爆炸已遇难40人伤1200人
  • 马上评丨学生举报食堂饭菜有蛆,教育局应该护谁的犊子