HarmonyOS 鸿蒙Next 路由跳转传参报错
HarmonyOS 鸿蒙Next 路由跳转传参报错
页面跳转通过router.pushUrl
传参,params带的参数是自定义的类对象,报错:TypeError: stack contains value
请问一下页面间传自定义参数要怎么传呢?
试下这个
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官方提供的,并且符合当前的系统版本要求。
-
检查参数格式:确保传递的参数格式正确,例如,如果参数是对象,需要确保对象中的属性类型和值都符合预期。
-
检查路由配置:在配置路由时,确保目标页面的路由路径和接收参数的方式(如通过Intent接收)已经正确设置。
-
权限问题:检查应用是否有足够的权限进行路由跳转,特别是在涉及到跨应用跳转时。
-
日志调试:通过查看系统日志或应用日志,找到具体的报错信息,这有助于定位问题。
-
版本兼容性:确认你的开发环境和目标设备的HarmonyOS版本是否兼容,有时新版本的系统会对旧有的API做出调整。
如果以上方法都无法解决你的问题,可能是由于具体的代码实现或系统bug导致的。此时,建议直接联系官网客服获取更专业的帮助。官网客服地址是: https://www.itying.com/category-93-b0.html
请注意,以上信息仅供参考,具体解决方案可能需要根据实际情况进行调整。