HarmonyOS鸿蒙Next中在har包内使用Navigation跳转使用getParamByName获取不到路由参数

HarmonyOS鸿蒙Next中在har包内使用Navigation跳转使用getParamByName获取不到路由参数 为什么在har包内使用Navigation的  this.stackPath.pushPath({ name: ‘TwoView’, param: ‘123456’ })跳转,在TwoView页面使用getParamByName获取不到路由参数

cke_2745.png

cke_3145.png


更多关于HarmonyOS鸿蒙Next中在har包内使用Navigation跳转使用getParamByName获取不到路由参数的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

【问题分析】

楼主在UI里面增加一个button来测试stackPath是否存在,再排查是否是因为初始化的问题导致

Button('测试栈信息').onClick((event: ClickEvent) => {
  this.stackPath.getParamByName('OneView')
})

更多关于HarmonyOS鸿蒙Next中在har包内使用Navigation跳转使用getParamByName获取不到路由参数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以在NavDestination的onReady生命周期中获取路由参数。

当NavDestination即将构建子组件之前会触发此回调。

.onReady((context) => {
  const params = context.pathInfo.params as Record<string,Object>
  console.log(params)
})

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

cke_134.png

aboutToAppear 会优先于NavDestination 调用。所以你的 stackPath 里还没有赋值 你就打印了!

加油,

在HarmonyOS Next中,Navigation跳转时getParamByName获取不到参数,问题通常源于参数未正确传递或命名不一致。检查目标页面的路由配置,确保参数名称与传递时完全匹配。使用router.pushUrl()时,需在parameters中明确设置参数键值对。若使用动态路由,验证参数是否通过URL正确编码和解码。确认页面路由生命周期,参数应在onPageShow回调中获取。排查资源混淆或模块隔离导致的参数丢失。

在HarmonyOS Next中,从提供的代码截图来看,使用this.stackPath.pushPath({ name: 'TwoView', param: '123456' })传递参数时,param字段需要是一个对象,而不是字符串。在目标页面TwoView中使用getParamByName获取参数时,应确保参数以键值对形式传递。

修改跳转代码为:

this.stackPath.pushPath({ name: 'TwoView', param: { key: '123456' } });

在TwoView页面中,通过getParamByName('key')即可获取到值’123456’。

如果参数直接作为字符串传递,系统可能无法正确解析,导致获取不到参数。请检查参数结构是否符合对象格式要求。

回到顶部