HarmonyOS 鸿蒙Next router参数传递后,方法无法调用

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

HarmonyOS 鸿蒙Next router参数传递后,方法无法调用

通过router打开新的页面,将数据传递过去后,数据的属性变量可以正常使用,但是方法无法调用

export class WYBData {
  name: string = 'wyb'
  printName() {
    console.log(this.name)
  }
}
@Entry
@Component
struct Index2 {
  private mData: WYBData = new WYBData()
  build() {
    Stack() {
      Button('打开新页面')
        .onClick(() => {
          router.pushUrl({
            url: 'pages/Index',
            params: {
              data: this.mData
            }
          })
        })
    }.width('100%')
    .height('100%')
  }
}
@Entry
@Component
struct Index {
  private mData?: WYBData
  private mParams?: object
  aboutToAppear(): void {
    this.initData()
  }
  initData() {
    this.mParams = router.getParams()
    this.mData = this.mParams?.['data'] as WYBData
  }
  build() {
    Stack() {
      Button('打印')
        .onClick(() => {
          if (this.mData) {
            // 可以输出
            console.log("WYBAAA", this.mData?.name)
            // 无法调用
            this.mData.printName()
          }
        })
    }.width('100%')
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next router参数传递后,方法无法调用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

参数不能传递方法和系统接口返回的对象。params参数不能传递方法。建议您提取系统接口返回的对象中需要被传递的基础类型属性,自行构造object类型对象进行传递。

文档路径:https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-router-0000001478061893-V3#ZH-CN_TOPIC_0000001523808578__routeroptions

更多关于HarmonyOS 鸿蒙Next router参数传递后,方法无法调用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,如果你遇到Next router参数传递后方法无法调用的问题,这通常与路由配置、参数传递方式或目标页面的方法定义有关。

  1. 检查路由配置:确保你在路由配置中正确注册了目标页面,并且路径与你在Next router中使用的路径一致。同时,检查是否所有必要的参数都已在路由配置中声明为可接收。

  2. 参数传递方式:确认你传递参数的方式是否符合HarmonyOS的路由传参规范。如果是复杂对象,确保该对象已正确序列化或符合系统传参要求。

  3. 目标页面方法定义:在目标页面中,检查你期望被调用的方法是否存在,其签名是否与传递的参数匹配。特别是方法名、参数类型和数量。

  4. 生命周期问题:有时方法无法调用可能是因为页面尚未完全加载或已处于不可操作状态。确保在页面生命周期的合适时机调用方法。

  5. 日志调试:使用HarmonyOS提供的日志工具打印相关信息,检查参数是否成功传递,以及目标页面是否接收到这些参数。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html 。在这里,你可以获得更专业的技术支持和解决方案。

回到顶部