router.pushUrl是否无法使用Map类型参数

在使用router.pushUrl({url: url, params: params})进行页面间传递数据时发现,params如果是Map或者其中包含Map时,在目标页面通过router.getParams()取得对应Map数据后,发现数据丢失,即无法从该Map对象中通过get取得对应value。

HarmonyOS
2024-06-13 23:31:25
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
pumayze

router是无法传递map类型的数据的,params中只能包含基础类型的数据,推荐使用Navigation进行复杂数据类型的传参(虽然可以传对象,但对象里目前也只能包含基础类型);不使用 Map,使用Record即可。

参考代码:

private routerParams : RouterParams = new RouterParams() 
private param : Record<string, string> = {}; 
routePage() { 
  try { 
    this.param['vip_source'] = 'qww' 
    this.routerParams.pageType = '11' 
    this.routerParams.params = this.param 
    this.routerParams.title = '新闻' 
    router.pushUrl({ 
      url: 'pages/RouterA', 
      params: this.routerParams 
    }) 
  } catch (err) { 
    console.info(` fail callback, code: ${err.code}, msg: ${err.msg}`) 
  } 
} 
 
@State value:Record<string, Record<string,string>> = router.getParams() as Record<string, Record<string,string>>; 
 
onPageShow() { 
  console.log("hh2:" + this.value['title']) 
  console.log("hh3:" + this.value['params']['vip_source']) 
}
分享
微博
QQ
微信
回复
2024-06-14 22:40:46
相关问题
router.pushUrl 无法使用Map类型参数
34浏览 • 1回复 待解决
router传递hashmap参数问题
529浏览 • 1回复 待解决
如何获取router.back传递的参数
1282浏览 • 1回复 待解决
Map类型怎么转换成Json string
736浏览 • 1回复 待解决
taskPool的参数支持Function类型
674浏览 • 1回复 待解决
mysql数据类型使用int类型和string类型
1313浏览 • 1回复 待解决
判断一个参数是不是Resource类型
37浏览 • 1回复 待解决