Navigation基础二

43 阅读2分钟

我们在上一篇章中基本介绍完了Router的一些用法,我我们回归到路由这个主题。

在很早的一篇内容中我们便提到了Navigation这个路由方式,这也是官方推荐我们使用的一种路由方式,在很早的那个篇章中我们介绍了其中的基础跳转方式pushPath,但是Navigation的功能十分强大,它肯定也支持跨包进行跳转,其中跨包进行跳转就需要用到我们的另外一个方法:pushPathByName。

从名字上来看它是根据名字来进行跳转的,确实我们观察其中的参数便可知晓

pushPathByName(name: string, param: unknown, animated?: boolean): void

他的第一个参数便是名字,然后是跳转传递的参数,以及是否支持转场动画。

我们直接上代码进行演示:

/* Hap包 */
@Entry
@Component
struct Index {
  pathInfos: NavPathStack = new NavPathStack()

  build() {
    Navigation(this.pathInfos) {
      Button("跨模块跳转")
        .onClick(_ => { this.pathInfos.pushPathByName("Index", null) })
    }
  }
}
@Builder
function IndexBuilder() {
  Index()
}
/* Hsp包 */
@Entry
@Component
struct Index {

  build() {
    NavDestination() {
      Text("我是跨Hsp包的NavDestination")
    }
  }
}

其中我们的pushPathByName必须传递两个参数,第一个参数是我们需要跳转包的名称,第二个是我们需要传递的参数,如果没有我们就直接写null便可。这需要我们在路由池中以及注册号的那个名称, 我下面这个是Hsp包中的路由池, 如下:

{
  "routerMap": [
    {
      "name": "Index",
      "pageSourceFile": "src/main/ets/pages/Index.ets",
      "buildFunction": "IndexBuilder"
    }
  ]

}

其中我们在Hsp包中注册好路由池并且在Hsp包中,ets下面的module.json5中绑定好了路由池后,还差最后一步便可以完成跳转,便是多个模块一起编译

在完成这一步后我们便可以使用Navigation的路由方式进行跨包的跳转

Harmony OS NEXT API12

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

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