在HarmonyOS NEXT开发中router.pushNamedRoute参数传递 在接收页面怎么接收?

在HarmonyOS NEXT开发中router.pushNamedRoute参数传递 在接收页面怎么接收?

阅读 601
avatarAI BotBETA

在HarmonyOS NEXT开发中,如果你使用router.pushNamedRoute进行页面跳转并传递参数,你可以在接收页面通过路由参数来获取这些传递过来的值。以下是如何实现这一功能的示例:

发送页面 (Sender Page)

在发送页面,你需要使用router.pushNamedRoute方法并传递参数。例如:

// 假设你要跳转到名为 "DetailPage" 的页面,并传递一个参数 "id"
router.pushNamedRoute({
    name: "DetailPage",
    params: {
        id: "12345"
    }
});

接收页面 (Receiver Page)

在接收页面,你可以通过路由上下文(如this.$route或类似的API,具体取决于HarmonyOS NEXT的路由库实现)来获取传递过来的参数。例如:

// 假设你使用的是类似 Vue.js 的语法
export default {
    onInit() {
        // 获取路由参数
        const routeParams = this.$route.params;
        
        // 从参数中获取 "id"
        const id = routeParams.id;
        
        console.log("Received ID:", id); // 输出: Received ID: 12345
        
        // 你可以根据这个ID进行进一步的操作,比如从数据库获取详情等
    }
};

注意:具体的API和方法名(如this.$route)可能会根据HarmonyOS NEXT的实际路由库和框架有所不同。如果HarmonyOS NEXT使用的是不同的路由系统,你可能需要查阅相关的官方文档来了解如何获取路由参数。

总结
在HarmonyOS NEXT中,通过router.pushNamedRoute传递参数后,在接收页面可以通过路由上下文(如this.$route.params)来获取这些参数。确保查阅相关文档以确认具体的API和方法名。

1 个回答

可以通过router.getParams();接收参数,API链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-refere...
参考demo如下:

import router from '@ohos.router'; 
class innerParams { 
  array:number[] 
  constructor(tuple:number[]) { 
    this.array = tuple 
  } 
} 
 
class routerParams { 
  text:string 
  data:innerParams 
  constructor(str:string, tuple:number[]) { 
    this.text = str 
    this.data = new innerParams(tuple) 
  } 
} 
 
@Entry 
@Component 
struct Router1 { 
 
  build() { 
 
    Column(){ 
      Column(){ 
        Text("我是页面1").fontSize(50) 
      } 
      Column(){ 
 
        Button("跳转") 
          .onClick(()=>{ 
            router.pushUrl({ 
              url: 'pages/Router11', 
              params: new routerParams('message' ,[123,456,789]) 
            }) 
          }) 
      } 
    } 
    .width('100%') 
    .height('100%') 
  } 
} 
import router from '@ohos.router'; 
 
class innerParams { 
  array:number[] 
 
  constructor(tuple:number[]) { 
    this.array = tuple 
  } 
} 
 
class routerParams { 
  text:string 
  data:innerParams 
  constructor(str:string, tuple:number[]) { 
    this.text = str 
    this.data = new innerParams(tuple) 
  } 
} 
 
@Entry 
@Component 
struct Router11 { 
 
  aboutToAppear(): void { 
    let s:number[]=((router.getParams() as routerParams).data as innerParams).array 
    console.log("*********:"+s); 
  } 
  build() { 
    Column(){ 
      Text("123").fontSize(50) 
      Row(){ 
        Text("33333").fontSize(50) 
      } 
    } 
    .width('100%') 
    .height('100%') 
    .opacity(0.5) 
    .backgroundColor(Color.Pink) 
 
  } 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进