HarmonyOS router使用是否可以带参数返回?

router使用是否可以类似startActivityForResult返回带着参数返回,并在跳转的页面里,通过onActivityResult判断是从哪个页面跳回来的。

阅读 555
1 个回答

需要手动定义页面参数并传递。假设PageA跳转PageB,PageB携带参数返回。

规避方案可以在onPageShow中添加判断逻辑,并使用一个全局变量来对拉起页面的原因进行判断;比如A中定义一个appstorage全局变量ispush=false,当push到B页面时将ispush变更为true,onpageshow进入时如果判断ispush为true则触发getParams,并在onbackground中修改ispush=false(应用退回后台),这样只有从其他页面跳转来的时候才会触发getParams

示例参考如下:

import router from '@ohos.router';

@Entry
@Component
struct pageA {
  @State info1: string = '';

  onPageShow(): void {
    const params = router.getParams() as Record<string, string>
    if (params) {
      this.info1 = params.info as string
    }
  }

  build() {
    Column() {
      Text('这是首页')
      Text(`这是详情页面的数据:${this.info1}`)
      Button('点击跳转详情面').onClick(() => {
        router.pushUrl({ url: 'pages/pageB' })
      })
    }
  }
}

页面跳转方式推荐navigation:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-navigation-V5\#navpathinfo10

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进