HarmonyOS 鸿蒙Next 路由跳转传参报错

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

HarmonyOS 鸿蒙Next 路由跳转传参报错 页面跳转通过router.pushUrl传参,params带的参数是自定义的类对象,报错:TypeError: stack contains value

请问一下页面间传自定义参数要怎么传呢?

3 回复

试下这个

import router from '@ohos.router'

class routerParams {
  text: string
  num: Number

  constructor(str: string, num: number) {
    this.text = str
    this.num = num
  }
}

@Entry
@Component
struct Index {
  @State message: string = 'biu';

  build() {
    Row() {
      Column() {
        Button(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            router.pushUrl({
              url: 'pages/Second',
              params: new routerParams("你好", 11111)
            })
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

//Second.ets
import router from '@ohos.router'

class routerParams {
  text: string
  num: Number

  constructor(str: string, num: number) {
    this.text = str
    this.num = num
  }
}
@Entry
@Component
struct Second {
  @State message: string = (router.getParams() as routerParams).text
  @State routermes: routerParams = router.getParams() as routerParams

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text('数字为:' + this.routermes.num)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next 路由跳转传参报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


// pageA
router.pushUrl({
  url: 'pages/pageB',
  params: {
    id: 123
  }
}, router.RouterMode.Single)

// pageB
interface RouteParams {
  id: number
}
aboutToAppear(): void {
  const params = router.getParams() as RouteParams
  if (params) {
    this.id = params.id
  }
}

针对“HarmonyOS 鸿蒙Next 路由跳转传参报错”的问题,以下提供可能的解决方案:

在HarmonyOS开发中,路由跳转传参报错可能由多种原因引起。首先,确保你使用的路由跳转API是HarmonyOS官方提供的,并且符合当前的系统版本要求。

  1. 检查参数格式:确保传递的参数格式正确,例如,如果参数是对象,需要确保对象中的属性类型和值都符合预期。

  2. 检查路由配置:在配置路由时,确保目标页面的路由路径和接收参数的方式(如通过Intent接收)已经正确设置。

  3. 权限问题:检查应用是否有足够的权限进行路由跳转,特别是在涉及到跨应用跳转时。

  4. 日志调试:通过查看系统日志或应用日志,找到具体的报错信息,这有助于定位问题。

  5. 版本兼容性:确认你的开发环境和目标设备的HarmonyOS版本是否兼容,有时新版本的系统会对旧有的API做出调整。

如果以上方法都无法解决你的问题,可能是由于具体的代码实现或系统bug导致的。此时,建议直接联系官网客服获取更专业的帮助。官网客服地址是: https://www.itying.com/category-93-b0.html

请注意,以上信息仅供参考,具体解决方案可能需要根据实际情况进行调整。

回到顶部