一、路由跳转

在实际的开发中,一个应用通常是有着多个不同功能和UI的页面。这就涉及到了页面的跳转,通过设定路由来实现在不同页面之间的跳转。目前鸿蒙中有这俩种的方式。一种是router路由,另一种是navigation路由。今天先说一下router路由,需要知道的一点是router路由从api18开始,华为不再提供更新了。

1.创建页面

创建页面有两种方法:

第一种是:鼠标右击pages文件夹 ,然后选择新建,选择page,再选择empty page即可。如图所示。

第二种是:添加一个新的普通页面,然后在src/main/resources/base/profile 中的 main_pages.json 文件中配置页面。注意:要使用双引号。

{
  "src": [
    "pages/Index",
    "pages/DetailPage"
  ]
}

2.页面跳转

首先是经常使用的跳转和后退功能。使用router的方法可以实现此效果。页面的跳转方法有两个,一个是可以返回的跳转,一个是无法返回的跳转。

//导入router
import { router } from '@kit.ArkUI'
// 1.调用方法-普通跳转(可以返回)
router.pushUrl({
  url:'页面地址'
})

// 2.调用方法-替换跳转(无法返回)
router.replaceUrl({
  url:'页面地址'
})

页面返回则是使用back方法

router.back()

3.例子

接下来,我们先创建三个页面,同时配置好页面。三个页面分别是Index DemoA DemoB。

import { router } from '@kit.ArkUI'

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('首页')
        .fontSize(30)
      Button('去详情页')
        .onClick(() => {
          // 方法一    pushUrl 跳转页面 可以返回
          router.pushUrl({
            url: 'pages/DemoA'
          })
          // 方法二      replaceUrl 跳转页面 不可以返回
          // router.replaceUrl({
          //   url: 'pages//DemoA'
          // })

        })
    }
    .width('100%')
    .height('100%')
  }
}
import { router } from '@kit.ArkUI'
@Entry
@Component
struct DemoA {
  build() {
    Column() {
      Text('详情页')
        .fontSize(40)
      Button('跳转到我的页面')
        .onClick(() => {
          router.pushUrl({
            url: 'pages/DemoB'
          })
        })
      Button('返回上一页')
        .onClick(() => {
          //back  返回上一页
          router.back()
        })

    }
    .width('100%')
    .height('100%')
  }
}
import { router } from '@kit.ArkUI'

@Entry
@Component
struct DemoB {
  build() {
    Column() {
      Text('我的')
        .fontSize(30)
      Button('back返回')
        .onClick(() => {
          router.back()
        })
      Button('跳转到详情页面')
        .onClick(() => {
          router.replaceUrl({
            url: 'pages/DemoA'
          })
        })
    }
    .width('100%')
    .height('100%')
  }
}

首先在首页点击按钮可以跳到详情页(DemoA)此时跳转使用的是可以返回的跳转,所以点击返回按钮可以返回到首页。当我们跳到我的页面(DemoB)中点击跳转到详情页面按钮时,会触发没有返回的跳转,这时在页面点击返回按钮的话不会返回到我的页面,而是会跳转到详情页,视觉上就是原地跳转了一下,这是因为,没有返回的跳转在跳转页面之后会将原来的页面删除掉。所以返回就会跳转到删除页面的上一个页面。

4.路由模式

4.1多实例模式(Standard)

此模式是默认的跳转模式,目标页面会被添加到页面栈顶,无论栈中是否存在相同url的页面。

4.2单实例模式(Single)

如果目标页面的url已经存在于页面栈中,则会将离栈顶最近的同url页面移动到栈顶,该页面成为新建页。如果目标页面的url在页面栈中不存在同url页面,则会按照默认的多实例模式进行跳转。

结语

总的来说,router是鸿蒙应用开发中实现页面导航的重要机制,其在页面跳转方面展现出快捷、简单的显著特点。通过pushUrl和replaceUrl两种核心方法,开发者能够灵活控制页面栈的跳转逻辑与返回行为,满足不同场景下的导航需求。

在实际开发中,仅完成页面跳转往往是不够的,更重要的是如何在页面间高效、安全地传递数据和状态。这正是router路由另一个关键能力的体现——参数传递。通过params参数,我们可以在跳转时携带必要的信息,使目标页面能够根据传入数据动态展示内容或执行特定逻辑。

下一篇文章将深入探讨router路由中的参数传递机制,详细讲解如何通过params对象传递复杂数据、如何在不同页面间安全地接收和处理参数。这将帮助我们构建更加动态和交互丰富的鸿蒙应用。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐