HarmonyOS 鸿蒙Next router.getParams()数据传递
HarmonyOS 鸿蒙Next router.getParams()数据传递
router.getParams()数据接收异常
A - B
B - A 返回数据 B发送数据,A接收
A - B
B - A B不发送数据,A会接收上一次传递的数据
A页面
@Entry
@Component
struct AddDeviceTypePage {
private readonly TAG:string = 'AddDeviceTypePage'
@State routerParams: Record<string, string> | null = null
private scanCodeResult:string = ''
onPageShow() {
this.routerParams = router.getParams() as Record<string, string>
if (this.routerParams !== undefined && this.routerParams !== null) {
this.scanCodeResult = this.routerParams.scanResult
}
ToastUtils.showToast(this.scanCodeResult + '')
}
}
B页面(第一次调用这个方法,第二次不调用,也会触发router.getParams()接收上一次的数据)
router.back({
url: 'pages/add_device/AddDeviceTypePage',
params: {
scanResult: result[0].originalValue
}})
更多关于HarmonyOS 鸿蒙Next router.getParams()数据传递的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在A页面判断的时候只判断了 this.routerParams
存在的时候,在第二次返回页面的时候 this.routerParams
为 undefined
,this.scanCodeResult
保留的还是上次的赋值,可以在后面加个 else
判断。示例如下:
onPageShow() {
this.routerParams = router.getParams() as Record<string, string>
if (this.routerParams !== undefined && this.routerParams !== null) {
this.scanCodeResult = this.routerParams.scanResult
} else {
this.scanCodeResult = ''
}
console.log(this.scanCodeResult + '')
}
更多关于HarmonyOS 鸿蒙Next router.getParams()数据传递的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
router 存在该问题,set参数对象后,后续不管get几次都可以拿到之前set的参数对象。针对该问题,可以使用get完之后,set一个空对象就行清除。
在HarmonyOS(鸿蒙)开发中,router.getParams()
方法通常用于在不同页面或组件间传递数据。这种方法是在使用ArkUI框架进行开发时常见的数据传递手段之一。
当你调用router.getParams()
时,它返回一个包含所有通过路由传递过来的参数的对象。这些参数可能是在启动目标页面或组件时,通过路由配置附加的。
例如,如果你从一个页面跳转到另一个页面,并在跳转时附带了一些参数,那么在目标页面中,你可以通过调用router.getParams()
来获取这些参数。返回的参数对象将包含所有传递的键值对,你可以通过键名来访问对应的值。
需要注意的是,确保在调用router.getParams()
之前,页面或组件已经正确通过路由跳转,并且参数已经正确附加。如果参数没有正确传递或页面跳转逻辑有误,router.getParams()
可能无法获取到预期的数据。
此外,鸿蒙系统的数据传递机制可能随着版本更新而有所变化,因此建议查阅最新的鸿蒙开发文档以获取最准确的信息。
如果在使用router.getParams()
时遇到问题,如无法获取参数或参数值不正确,请检查参数传递的逻辑是否正确,以及目标页面或组件是否正确处理了这些参数。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,