在鸿蒙操作系统的开发过程中,页面间的跳转与参数传递是基本且重要的功能。本文将详细介绍如何使用router实现页面间的跳转与传参。

页面A与页面B:

需求:

当点击页面A的右箭头时跳转到页面B并将列表数据传递给页面B,当点击页面B左上角的返回箭头时,返回到页面A并传递列表数据给页面A 。

实现步骤:

A  ---> B:

1、页面A中引入router
import router from '@ohos.router';
2、在页面A箭头的点击事件中使用router.pushUrl实现跳转
 Image($r('app.media.ic_right'))
        .width(20)
        .onClick(() => {
          router.pushUrl({
            url:'pages/noticeList'
          })
        })
3、用params传递参数
 Image($r('app.media.ic_right'))
        .width(20)
        .onClick(() => {
          router.pushUrl({
            url:'pages/noticeList',
            params:{
                msg: '我是A页面传过来的数据'
            }
          })
        })
4、在页面B中接收
 aboutToAppear() {
    const params = router.getParams()
    promptAction.showToast({ message: JSON.stringify(params) })
  }

B ---> A :

1、在页面B中引入router
import router from '@ohos.router';
2、在页面B返回箭头点击事件中使用router.back返回并传参:
 Image($r('app.media.ic_back'))
            .width(20)
            .fillColor('#007aff')
            .onClick(() => {
              router.back({
                url:'pages/Index',
                params:{
                  num:this.listData.length
                }
              })
            })
3、 在页面A中接收
 onPageShow(): void {
    let params:object = router.getParams()
    if(params['num']) {
      this.listData[0].num = params['num']
    }

  }

总结:

  • 跳转 router.pushUrl()
  • 后退 router.back()
  • 替换跳转 router.replaceUrl()

TIP

  • 页面栈的最大容量为32个页面。如果超过这个限制,可以调用 router.clear() 方法清空历史页面栈,释放内存空间。

 

 

 

Logo

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

更多推荐