鸿蒙Router路由跳转——不同页面之间的跳转
一、路由跳转
在实际的开发中,一个应用通常是有着多个不同功能和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对象传递复杂数据、如何在不同页面间安全地接收和处理参数。这将帮助我们构建更加动态和交互丰富的鸿蒙应用。
更多推荐



所有评论(0)