鸿蒙HarmonyOS 4-页面路由
页面路由router
- 页面路由router是指在应用程序中实现不同页面之间的跳转和数据传递
- 页面保留在页面栈,先进后出,所以最先打开的在最前面
- 页面栈的最大容量上限是32个页面,使用
router.clear()
方法可以清空页面栈,释放内存 - Router有两种页面跳转模式,分别是:
router.pushUrl()
:目标页不会替换当前页,而是压入页面栈,因此可以用router.back()
返回当前页router.replaceUrl()
:目标页替换当前页,当前页会被销毁并释放资源,无法返回当前页
- Router有两种页面实例模式,分别是:
Standard
:标准实例模式,每次跳转都会建立一个目标页并压入栈顶。默认就是这个模式single
:单实例模式,如果目标页已经存在,则将离栈顶最近的同Url页面移至栈顶并重新加载
用法
- 首先要导入HarmonyOS提供的Router模块:
1
import router from '@ohos.router';
- 然后利用router实现跳转、返回等操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25//跳转页
router.pushUrl(
{
url: 'pages/PropPage', //目标页面路径
params: {id: 1} //传递的参数(可选)
},
router.RouterMode.Single, //页面模式
err => {
if(err){ //异常响应
console.log(`路由失败 errCode: ${err.code} errMsg: ${err.message}`)
} //错误码:100001:内部错误,可能是页面渲染失败;100002:路由地址错误;100003:路由栈页面已满
})
//目标页
params: any = router.getParams() //获取传递的参数
router.showAlertBeforeBackPage({
message: '还未保存哦,确定要返回吗?'
}) //返回提示弹窗,如果点取消,则返回操作会被终止。
router.back() //返回上一页
router.back( //返回参数
{
url: 'xxx'
params: {id: 010}
}
) - 在
base/main_pages.json
文件当中,记得添加该目标页地址
评论