HarmonyOS 鸿蒙Next navigation,是否支持url路由跳转携带参数信息打开相应页面,提供demo

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next navigation,是否支持url路由跳转携带参数信息打开相应页面,提供demo

navigation,是否支持url路由跳转携带参数信息打开相应页面,提供demo
 

2 回复

可以参考以下demo页面间参数传递:

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:目标页面获取发起页参数有两种方式:

方式一:目标页在NavDestination的onReady函数中获取传递过来的参数(推荐使用此方式)

build() {

NavDestination(){

...

}.hideTitleBar(true)

.onReady(cxt => {

this.loginParam = cxt.pathInfo.param as LoginParam;

...

})

}
复制
方式二:目标页通过“NavPathStack.getParamByIndex(this.pageStack.getAllPathName().length - 1)”获取到发起页传递过来的参数

@Component

export struct loginPageView {

@Consume('pageInfo') pageStack : NavPathStack;

aboutToAppear(): void {

this.loginParam = this.pageStack.getParamByIndex(this.pageStack.getAllPathName().length - 1) 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)

    })

  }

}

}

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-navigation#子组件

更多关于HarmonyOS 鸿蒙Next navigation,是否支持url路由跳转携带参数信息打开相应页面,提供demo的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next navigation支持通过URL路由跳转携带参数信息打开相应页面。在鸿蒙系统中,可以使用Intent和URI机制来实现这一功能。

Demo示例如下:

  1. 定义路由规则: 在config.json中定义路由规则,假设我们要导航到一个名为DetailPage的页面,并携带参数id

    {
      "module": {
        "package": "com.example.myapp",
        "abilities": [
          {
            "name": "com.example.myapp.DetailPageAbility",
            "label": "Detail Page",
            "launchType": "singleTop",
            "visible": true,
            "uriPatterns": [
              "/detail?id={id}"
            ]
          }
        ]
      }
    }
    
  2. 页面跳转: 在代码中构建Intent,并附带参数进行页面跳转。

    let intent = new ohos.intent.Intent();
    intent.setElement(new ohos.aafwk.content.ElementName('com.example.myapp', 'com.example.myapp.DetailPageAbility'));
    intent.setParam("id", "12345");
    intent.setUri("file:///detail?id=12345");
    this.context.startAbility(intent);
    
  3. 接收参数: 在DetailPageAbilityonStart方法中获取参数。

    onStart(intent) {
      let id = intent.getParam("id");
      console.log("Received ID: " + id);
    }
    

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部