HarmonyOS鸿蒙Next中router获取不到参数是什么原因?
HarmonyOS鸿蒙Next中router获取不到参数是什么原因? 跳转之前参数man的length 在log中都打印出来是1。为什么获取参数时候就是 undefined ?
let paramsMap: HashMap<string, GameType> new HashMap();
paramsMap.set("key_gametype", gameType);
BL.error("DefaultLeveLPage befor router.pushUrL *********paramsMap=" + paramsMap.Length)
router.pushUrl({
url: 'pages/DefaultLevelPage',
params: paramsMap // 添加params属性,传递自定义参数,任意类型
}, (err) => {
console.info('Invoke pushUrl succeeded.');
})
aboutToAppear() {
let params: HashMap<String, GameType> = router.getParams() as HashMap<String, GameType>;
console.error("DefaultLevelPage*********" + params.length)
this.gameType = params.get("key_gametype") as GameType;
console.error("DefaultLeveLPage*********" + this.gameType)
}
E DefaultLevelPage befor router.pushUrL ********paramsMap=1, %{public}s
E DefaultLevelPage*********undefined, %{public}s
更多关于HarmonyOS鸿蒙Next中router获取不到参数是什么原因?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
4 回复
router传递的参数会经过序列化,过着中会丢失方法。所以无法使用map ,list传参
可以使用AppStorage 实现ability之间数据透传。
参考链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-appstorage-V5
更多关于HarmonyOS鸿蒙Next中router获取不到参数是什么原因?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
有试过在下一层吗?就是params:{xxx:hashmap}
传不过去也很正常,因为你这个class里面带方法,他没法序列化
在HarmonyOS鸿蒙Next中,router获取不到参数的可能原因包括:
- 路由配置错误:路由路径或参数未在
config.json中正确配置,导致无法解析参数。 - 参数传递错误:在跳转页面时,参数未正确传递或格式不符合要求。
- 生命周期问题:在页面加载时,参数尚未传递到目标页面,导致获取失败。
- API使用不当:
router.push或router.replace方法未正确使用,导致参数未传递。 - 页面跳转时序问题:页面跳转与参数传递的时序未正确处理,导致参数丢失。
- 参数解析错误:目标页面未正确解析传递的参数,导致无法获取。
检查路由配置、参数传递、API使用及页面生命周期,确保参数正确传递和解析。
在HarmonyOS鸿蒙Next中,router获取不到参数可能是以下原因:
- 路径配置错误:检查
router.push或router.replace的路径是否正确,确保路径与配置的路由一致。 - 参数传递方式错误:确保使用
params或query正确传递参数。例如,router.push({ path: '/detail', query: { id: 123 } })。 - 目标页面未正确解析参数:在目标页面中,确保通过
this.$route.query或this.$route.params正确获取参数。 - 生命周期问题:确保在页面加载时(如
onInit或onReady)获取参数,避免在未加载完成时访问。 - 路由模式问题:检查是否使用了正确的路由模式(如
hash或history),确保与项目配置一致。
通过排查这些问题,通常可以解决router获取不到参数的情况。

