HarmonyOS鸿蒙Next中同一个HSP中router.pushUrl中的url问题
HarmonyOS鸿蒙Next中同一个HSP中router.pushUrl中的url问题
在同一个HSP中,页面之间的跳转,router.pushUrl
路由的URL模板,使用'页面所在的文件名(不加.ets后缀)'
的模板无法跳转,
使用这样的'@bundle:包名(bundleName)/模块名(moduleName)/路径/页面所在的文件名(不加.ets后缀)'
模板,才能跳转成功,
-
鸿蒙里面就是这样设计的吗?
-
这样的bundle之前,比较麻烦,有没有更好的路由跳转方式?
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通常遵循以下规则:
-
URL格式:URL应包含页面路径和查询参数。例如:
page/index?param1=value1
。page/index
是页面路径,param1=value1
是查询参数。 -
页面路径:页面路径需在
config.json
中定义。例如:
{
"pages": [
"page/index",
"page/detail"
]
}
-
查询参数:通过
router.pushUrl
传递参数时,参数会附加在URL中,目标页面可通过router.getParams
获取。 -
HSP内部跳转:如果
router.pushUrl
在同一HSP内跳转,URL可直接使用相对路径,如page/detail
。 -
注意事项:
- URL路径必须在
config.json
中注册。 - 查询参数需在目标页面中显式处理。
- URL路径必须在
示例代码:
// 跳转到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
参数应遵循以下规范:
-
路径格式:
url
应使用相对路径或绝对路径。相对路径基于当前页面的路径,绝对路径则是从项目根目录开始的完整路径。 -
HSP内部页面:如果目标页面在同一个HSP内,可以直接使用相对路径,如
./pageB
,或者绝对路径,如/pages/pageB
。 -
跨HSP页面:如果目标页面在另一个HSP中,需要使用
@hsp
前缀,如@hsp://com.example.anotherhsp/pageC
。
确保路径正确,避免因路径错误导致的页面跳转失败。