一.基本概述
1.页面路由
页面路由是指在应用程序中实现不同页面之间的跳转和数据传递。
2.页面栈
我们访问过的所有页面都会被HarmonyOS保存到一个名为页面栈的空间当中
我们访问的页面会压入栈顶,如果一直访问新页面,访问一次压入一个,栈里面的页面会越来越多,因此HarmonyOS给页面栈加了容量的上限:32个页面.使用router.clear()方法可以清空页面栈,释放内存 .
二.页面跳转模式
Router有两种页面跳转模式,分别是:
1.router.pushUrl():
目标页不会替换当前页,而是压入页面栈,因此可以用router.back()返回当前页 2.router.replaceUrl():
目标页替换当前页,当前页会被销毁并释放资源,无法返回当前页
三.页面实例模式
Router有两种页面实例模式,分别是:
1.Standard: 标准实例模式,每次跳转都会新建一个目标页并压入栈顶。默认就是这种模式
2.Single: 单实例模式,如果目标页已经在栈中,则离栈顶最近的同Url页面会被移动到栈项并重新加载
四.router使用步骤
1.首先要导入HarmonyOS提供的Router模块:
import router from '@ohos.router';
2.然后利用router实现跳转、返回等操作:
//跳转到指定路径,并传递参数
router.pushUrl(
{
url: 'pages/ImagePage',
params: {id: 1}
},
router.RouterMode.Single,
err => {
if(err){
console.log('路由失败.')
}
}
}
// RouterOptions
// - url: 目标页面路径
// - params:传递的参数(可选)
// 页面模式:RouterMode枚举
// 异常响应回调函数,错误码:
//-100001:内部错误,可能是渲染失败
// 100002:路由地址错误
// - 100003:路由栈中页面超过32
// 获取传递过来的参数
params: any =
router.getParams()
//返回上一页
router.back()
//返回到指定页,并携带参数
router.back(
{
url: 'pages/Index'
params: {id: 10}
}
}
注:其中url需要在 base/main_pages.json中配置页面
//格式如下:
{
"src": [
"pages/Index",
url: 'pages/ImagePage'
]
}
// 返回确认提示
router.showAlertBeforeBackPage({
message:'支付还未完成,确定返回吗?
})
//返回上一页
router.back()
利用返回确认提示,避免因失误导致不必要的返回,提高用户使用感受,点击确认才会返回,示例如下: