HarmonyOS 用Navigation打开页面,页面返回的时候,怎么拿到回传参数。

现在有个场景,网络请求的时候,发现session过期,拉起登陆页面,登陆后,怎么把数据通知回之前拉起网络的地方。网络模块没有界面。每次发网络请求的事情,都会判断session是否过期。session过期,就会拉起登录页面。登录成功后,需要重新发起session过期的网络请求。

HarmonyOS
2024-12-20 14:57:52
1426浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
Excelsior_abit

Navigation的页面间,通过NavPathInfo对象中的params属性,实现从发起页到目标页的数据传递;通过onPop回调参数,实现处理目标页面的返回。Step1:构建NavPathInfo对象,输入需要传递给目标页面的参数。params参数:将需要传递的数据封装起来进行传递,无法传递对象里面的函数。具体的支持参数可以参考指南onPop参数:目标页面触发pop时的返回,在回调中通过PopInfo.info.param获取到返回的对象。

// 发起页 mainPage
let loginParam : LoginParam = new LoginParam()
// 构建pathInfo对象
let pathInfo : NavPathInfo = new NavPathInfo('loginPage', loginParam
  , (popInfo: PopInfo) => {
    let loginParam : LoginParam = popInfo.info.param as LoginParam;
    ...
  })
// 讲参数传递到目标页
this.pageStack.pushDestination(pathInfo, true);

Step2:目标页通过“NavPathStack.getParamByIndex(0)”获取到发起页传递过来的参数

@Component
export struct loginPageView {
  @Consume('pageInfo') pageStack : NavPathStack;

  aboutToAppear(): void {
    this.loginParam = this.pageStack.getParamByIndex(0) as LoginParam;
  }
  ...
}
Step3:目标页通过NavPathStack.pop方法返回起始页,其result参数用来传递需要返回给起始页的对象

@Component
export struct loginPageView {
  @Consume('pageInfo') pageStack : NavPathStack;
  // 页面构建的对象
  private loginParam! : LoginParam;
  ...
  build() {
    NavDestination(){
      ...
      Button('login').onClick( ent => {
        // 将对象返回给起始页
        this.pageStack.pop(this.loginParam, true)
      })
    }
  }
}
  • 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.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
分享
微博
QQ
微信
回复
2024-12-20 18:03:59
相关问题
HarmonyOS navigation页面之间
831浏览 • 1回复 待解决
如何在navigation跳转页面返回
2754浏览 • 1回复 待解决
HarmonyOS Navigation数据
617浏览 • 1回复 待解决
HarmonyOS 页面反向怎么
864浏览 • 1回复 待解决
HarmonyOS 路由页面接收回参数方式
2625浏览 • 1回复 待解决