OpenHarmony:我看谁还在router 跳转时传 Map 类型
2024-12-18 12:46:13
206次阅读
0个评论
一、Map 和 Record 的基本概念
Map:在OpenHarmony ArkUI 中,Map 是一种键值对的数据结构,类似于其他编程语言中的字典或哈希表。它允许通过特定的键来访问对应的值。例如:
let myMap = new Map();
myMap.set('key1', 'value1');
myMap.set('key2', 'value2');
console.log(myMap.get('key1'));
Record:Record 则是一种对象类型,它可以包含多个属性,每个属性都有一个名称和对应的值。与普通对象不同的是,Record 的属性名可以是动态的,并且可以在运行时添加或修改属性。例如:
let record: Record<string, string> = { "key": 'value', "age": "4" };
record["key1"] = "value1";
二、router 跳转的最佳实践
当使用 Router 进行页面跳转时,通常需要传递一些参数以便在目标页面中使用。在在OpenHarmony ArkUI 中,Router 跳转时传的是对象 Record,而不是 Map。这里也可以封装成一个对象传值,这里只针对未封装成对象的情况!
例如,假设我们有两个页面 PageA 和 PageB,从 PageA 跳转到 PageB 并传递一些参数,可以这样做:
// 在 PageA 中进行跳转并传递参数
let params: Record<string, string> = {}
router.pushUrl({
url:"pages/PageB",
params:params
})
在 PageB 中,可以通过以下方式获取传递过来的参数:
// 在 PageB 中获取参数
aboutToAppear(): void {
const params = router.getParams() as Record<string, string>
}
如果尝试使用 Map 来传递参数,可能会出现错误或者无法正确获取参数的情况。
三、为什么 router 跳转时使用 Record 而不是 Map
- router跳转时的参数类型就是对象。传递到pageB以后在aboutToAppear方法里调用router.getParams()获取到的也是一个对象,只能使用Record来接收。
- 如果使用map来接收,此时如果使用map.get获取不到值,当调用到map类型专有的方法时,会报错找不到方法,因为这里实际上是一个对象,并不是Map
00
- 1回答
- 0粉丝
- 0关注
相关话题
- OpenHarmony: 如何实现跨模块的页面跳转功能
- OpenHarmony: 解决反序列化时number类型精度丢失
- 鸿蒙开发:校验构造传参装饰器@Require
- 我眼中的宋江
- OpenHarmony: 如何通过路由跳转到一个只有页面没有UIAbility的模块
- 如何跳转到权限设置页面
- OpenHarmony5.0应用开发 (三、应用程序包结构理解及Ability的跳转,与Android的对比)
- (六一)ArkCompiler 的高级类型推导:静态与动态类型推导的结合及提升代码类型安全性
- 【HarmonyOS NEXT】权限申请及应用设置页跳转
- 【HarmonyOS NEXT】权限申请及应用设置页跳转
- 鸿蒙封装日志库并支持跳转显示行号
- 鸿蒙Navigation处理启动页跳转到首页问题
- (二十)ArkCompiler 的调试支持:编译时信息生成与调试效率提升
- 鸿蒙开发:ArkTs数据类型
- (十六)ArkCompiler 能耗优化:编译时插入能耗探针与应用能耗降低策略