HarmonyOS 鸿蒙Next routerMap中的 customData自定义数据如何获取

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

HarmonyOS 鸿蒙Next routerMap中的 customData自定义数据如何获取

routerMap中的 customData自定义数据如何获取

2 回复

参考https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-bundlemanager-hapmoduleinfo-V13#routeritem12,可以通过bundleManager.getBundleInfoForSelf()获取自身配置信息,当需要获取routerMap信息时bundleFlags参数传入GET_BUNDLE_INFO_WITH_HAP_MODULE和GET_BUNDLE_INFO_WITH_ROUTER_MAP获取,进而获取customData字符串或用JSON.parse()解析为对象

  let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_HAP_MODULE | bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_ROUTER_MAP;

 try {
   bundleManager.getBundleInfoForSelf(bundleFlags).then((data) => {
     let routerMap = data.routerMap
     let jsonStr: string = '';
     for (let i = 0 ; i < routerMap.length; i++) {
       if (routerMap[i].name === 'Destination') {
         jsonStr = routerMap[i].customData
       }
     }
     let obj: XObject = JSON.parse(jsonStr)
     console.info('routerMap:' + jsonStr)
     hilog.info(0x0000, 'testTag', 'getBundleInfoForSelf successfully. Data: %{public}s', JSON.stringify(data));
   }).catch((err: BusinessError) => {
     hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed. Cause: %{public}s', err.message);
   });
 } catch (err) {
   let message = (err as BusinessError).message;
   hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed: %{public}s', message);
 }

在HarmonyOS鸿蒙Next中,要从routerMap中获取customData自定义数据,通常需要通过路由跳转时传递的参数来访问。以下是获取customData自定义数据的一般步骤:

  1. 路由跳转时传递参数

    • 使用router.pushUrl方法时,在params属性中传递包含customData的对象。
  2. 在目标页面中获取参数

    • 在目标页面的路由处理逻辑中,通过router.getParams()方法获取传递的参数。
    • 如果参数是复杂对象,可能需要类型转换或路径访问来获取具体的customData值。
  3. 使用自定义数据

    • 获取到customData后,可以在目标页面中根据需求进行使用和处理。

请注意,确保在路由跳转和参数传递过程中,数据的类型和结构是正确且一致的,以避免类型不匹配或数据丢失的问题。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部