HarmonyOS 鸿蒙Next 通过 router.getParams拿不到函数类型的属性
HarmonyOS 鸿蒙Next 通过 router.getParams拿不到函数类型的属性
router.pushUrl({
url: ‘pages/privacy/PrivacyPage’,
params: {callback: () => {console.log(‘test’)}}
}, router.RouterMode.Single)
push到PrivacyPage之后,在PrivacyPage通过
const fff = router.getParams() as routerParams).callback
routerParams是一个接口:
interface routerParams {
callback: ESObject
}
fff拿到的是undefined
更多关于HarmonyOS 鸿蒙Next 通过 router.getParams拿不到函数类型的属性的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
您看下emitter能不能满足您的需求:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-emitter
更多关于HarmonyOS 鸿蒙Next 通过 router.getParams拿不到函数类型的属性的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next版本中,如果你在使用router.getParams
时无法获取到函数类型的属性,这通常是因为getParams
方法主要用于获取路由传递的基本数据类型参数(如字符串、数字、布尔值、对象等),并不直接支持函数类型的属性传递。
函数类型属性由于其特殊性(可执行代码),通常不会被序列化为参数进行传递。这是因为函数本身无法被直接存储或传输,只能传递其引用或定义,而路由参数传递机制往往不支持复杂对象(如函数)的序列化与反序列化。
为了解决这个问题,你可以考虑以下几种替代方案:
-
传递函数名或标识符:传递一个表示函数的字符串名称或标识符,然后在目标页面通过该名称或标识符调用相应的函数。
-
使用全局事件总线:通过全局事件机制,在源页面触发一个事件并携带必要的数据,目标页面监听该事件并执行相应的函数。
-
使用服务或数据仓库:利用服务或数据仓库(如全局变量、数据库等)在多个页面间共享数据,从而间接实现函数调用的效果。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html