HarmonyOS 鸿蒙Next 使用Navigation进行页面跳转 目标页获取参数类型如何判断

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

HarmonyOS 鸿蒙Next 使用Navigation进行页面跳转 目标页获取参数类型如何判断

// 接口模型 export interface RouterNavModel { params?: string, // 要传递给跳转页面的参数 age?: number }

// A页面按钮事件 Button(‘跳转到下一个界面1传递Interface数据’) .onClick(() => { const model: RouterNavModel = { params: ‘第一界面传递的接口数据’, age: 20 }

// 使用系统onPop参数回调方法
this.pageStack.pushPath({ name: 'Base2HomePage2', param: model, onPop: (info) => {
  const ss = info.result as string
  console.log('系统onPop带参数返回' + ss)
} })

})

// B页面 NavDestination() { Column() { … }

.hideTitleBar(true) .onReady((context: NavDestinationContext) => {

console.log(‘Base2HomePage2 — onReady’) // 方法一获取参数(问题:1、pathInfo.param返回值是@type { ?unknown }类型,问如何去转换成类型?,2、如果有两个入口进入到B页面且携带不同类型参数,如何区分?) const pathInfo = context.pathInfo const model = pathInfo.param as RouterNavModel console.log(‘00000’ + JSON.stringify(model))

// 方法二获取参数(问题:1、getParamByName函数返回值是@returns { Array<unknown> }类型,如何转换成类型, 2、如果有两个入口进入到B页面且携带不同类型参数,如何区分?) const value = this.pageStack.getParamByName(‘Base2HomePage2’) as [] console.log(‘111111’ + JSON.stringify(value)) })


更多关于HarmonyOS 鸿蒙Next 使用Navigation进行页面跳转 目标页获取参数类型如何判断的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

可以通过类型检查的方式来判断,参考:

if (typeof pathInfo.param === 'string') {
    let param = pathInfo.param;
    // 在这里处理字符串类型的param
}

更多关于HarmonyOS 鸿蒙Next 使用Navigation进行页面跳转 目标页获取参数类型如何判断的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


  1. 要么全部放在一个类型里面
  2. 对每个类型分别进行断言,然后判断
if((this.data as RouterNavModel2).num){

}
if((this.data as RouterNavModel).age){
  
}

如果全部放在一个类里面,一旦遇到上面情况都要在类中添加属性,耦合度太高,不利于多人开发的

系统断言不是很友好,发现问题如下

假如传递到B页面参数为{"a": "aaa", "b": "bbb"},

B页面存在2个变量(类型分别为typeA何typeB)来接受参数,typeA中只有属性a、b,typeB中有属性a、b、c(多一个属性),这时候使用as方法都可以转换成功,其实这个时候希望typeB类型的变量为null才正确的,

在HarmonyOS鸿蒙Next系统中,使用Navigation进行页面跳转时,目标页面获取参数类型通常可以通过以下几种方式进行处理,而不涉及Java或C语言的具体实现细节:

  1. 定义参数接口:在进行页面跳转前,定义一个公共的参数接口或数据模型,明确每个参数的类型。目标页面在接收参数时,根据接口或数据模型的定义来解析参数类型。

  2. 使用泛型:如果Navigation组件或框架支持泛型(尽管鸿蒙的具体实现可能有所不同),可以在跳转时指定参数类型,目标页面则根据泛型类型来接收和处理参数。

  3. 类型标记:在传递参数时,可以额外传递一个类型标记(如字符串形式的类型名),目标页面根据这个标记来判断并转换参数的实际类型。

  4. 封装参数对象:将所有参数封装在一个自定义对象中,该对象内部可以包含类型信息和实际数据。目标页面在接收时,先解析这个封装对象,再根据类型信息提取具体参数。

请注意,具体实现方式取决于HarmonyOS鸿蒙Next系统中Navigation组件的实际功能和API设计。如果上述方法不适用于您当前的开发环境或版本,请查阅最新的官方文档或API参考。

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

回到顶部