HarmonyOS鸿蒙Next中同一个HSP中router.pushUrl中的url问题

HarmonyOS鸿蒙Next中同一个HSP中router.pushUrl中的url问题 在同一个HSP中,页面之间的跳转,router.pushUrl路由的URL模板,使用'页面所在的文件名(不加.ets后缀)'的模板无法跳转,
使用这样的'@bundle:包名(bundleName)/模块名(moduleName)/路径/页面所在的文件名(不加.ets后缀)'模板,才能跳转成功,

  1. 鸿蒙里面就是这样设计的吗?

  2. 这样的bundle之前,比较麻烦,有没有更好的路由跳转方式?

3 回复

1、在同一个HSP中,页面的之间跳转,router.pushUrl路由的url模版,使用’页面所在的文件名(不加.ets后缀)‘的模版无法跳转, 使用这样的’@bundle:包名(bundleName)/模块名(moduleName)/路径/页面所在的文件名(不加.ets后缀)'模版,才能跳转成功, ====》如果是使用的router方式的话,当前是这么设计的。 2、这样的bundle之前,比较麻烦,有没有更好的路由跳转方式? ====》推荐使用 Navigation 进行页面跳转。

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-navigation-navigation-V5

更多关于HarmonyOS鸿蒙Next中同一个HSP中router.pushUrl中的url问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,router.pushUrl用于页面路由跳转,URL的格式和路径需要正确配置以确保跳转成功。URL通常遵循以下规则:

  1. URL格式:URL应包含页面路径和查询参数。例如:page/index?param1=value1page/index是页面路径,param1=value1是查询参数。

  2. 页面路径:页面路径需在config.json中定义。例如:

{
  "pages": [
    "page/index",
    "page/detail"
  ]
}
  1. 查询参数:通过router.pushUrl传递参数时,参数会附加在URL中,目标页面可通过router.getParams获取。

  2. HSP内部跳转:如果router.pushUrl在同一HSP内跳转,URL可直接使用相对路径,如page/detail

  3. 注意事项:

    • URL路径必须在config.json中注册。
    • 查询参数需在目标页面中显式处理。

示例代码:

// 跳转到page/detail页面,并传递参数
router.pushUrl({
  url: 'page/detail?param1=value1'
});

目标页面获取参数:

const params = router.getParams();
console.log(params.param1); // 输出: value1

确保URL路径和参数格式正确,以避免跳转失败。

在HarmonyOS鸿蒙Next中,HSP(Harmony Shared Package)是用于共享资源的模块。在同一个HSP中使用router.pushUrl进行页面跳转时,url参数应遵循以下规范:

  1. 路径格式url应使用相对路径或绝对路径。相对路径基于当前页面的路径,绝对路径则是从项目根目录开始的完整路径。

  2. HSP内部页面:如果目标页面在同一个HSP内,可以直接使用相对路径,如./pageB,或者绝对路径,如/pages/pageB

  3. 跨HSP页面:如果目标页面在另一个HSP中,需要使用@hsp前缀,如@hsp://com.example.anotherhsp/pageC

确保路径正确,避免因路径错误导致的页面跳转失败。

回到顶部