页面路由router

  • 页面路由router是指在应用程序中实现不同页面之间的跳转和数据传递
    image.png
  • 页面保留在页面栈,先进后出,所以最先打开的在最前面
  • 页面栈的最大容量上限是32个页面,使用router.clear()方法可以清空页面栈,释放内存
  • Router有两种页面跳转模式,分别是:
  1. router.pushUrl():目标页不会替换当前页,而是压入页面栈,因此可以用router.back()返回当前页
  2. router.replaceUrl():目标页替换当前页,当前页会被销毁并释放资源,无法返回当前页
  • Router有两种页面实例模式,分别是:
  1. Standard:标准实例模式,每次跳转都会建立一个目标页并压入栈顶。默认就是这个模式
  2. single:单实例模式,如果目标页已经存在,则将离栈顶最近的同Url页面移至栈顶并重新加载

用法

  1. 首先要导入HarmonyOS提供的Router模块:
    1
    import router from '@ohos.router';
  2. 然后利用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}
    }
    )
  3. base/main_pages.json文件当中,记得添加该目标页地址
    image.png