HarmonyOS 鸿蒙Next router.getParams()数据传递

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

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

3 回复

在A页面判断的时候只判断了 this.routerParams 存在的时候,在第二次返回页面的时候 this.routerParamsundefinedthis.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

回到顶部