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

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

HarmonyOS
2天前
浏览
收藏 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)
      })
    }
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
如何在navigation跳转页面返回
1759浏览 • 1回复 待解决
HarmonyOS 页面反向怎么
114浏览 • 1回复 待解决
HarmonyOS 路由页面接收回参数方式
1049浏览 • 1回复 待解决
返回页面router.back如何传递参数
999浏览 • 2回复 待解决
HarmonyOS 页面参问题
345浏览 • 1回复 待解决
鸿蒙系统怎么打开定位开关页面
10400浏览 • 1回复 待解决