HarmonyOS鸿蒙Next中在hsp模块中使用pushUrl跳转同hsp模块的其他页面

HarmonyOS鸿蒙Next中在hsp模块中使用pushUrl跳转同hsp模块的其他页面 在某个hsp模块中,使用pushUrl跳转同hsp所在的其他页面,如果直接填写main_pages.json文件中注册的路径,会报错,无法找到页面,示例如下:

// 某个hsp模块中
Button(`hap 页面1 资源定位`).width('80%').margin({ top: 10, bottom: 10 })
  .onClick(() => {
    this.getUIContext().getRouter().pushUrl({
      // url 不加包名和模块名,会直接从 hap 中寻找页面
      url: 'a_component_router/00_常用_常用展示示例/004_常用_使用命名路由和动态导入跳转/Page01'
    });
  })

这是因为直接填写页面的路径的话,会在hap(即entry)包中根据路径来查找页面,而不会在hsp模块中查找。

要想使用pushUrl跳转同hsp所在的其他页面,需要把bundleName、moduleName填写完整,具体格式如下:

"@bundle:[bundleName]/[moduleName]/ets/页面路径"

示例如下:

// hsp 跳转 同hsp,使用 资源定位
Button(`hsp_test1 页面1 资源定位`).width('80%').margin({ top: 10, bottom: 10 })
  .onClick(() => {
    // 通过 url 跳转到 同hsp 页面,需要填写完整的路径,格式为 "@bundle:[bundleName]/[moduleName]/ets/页面路径"
    // com.example.temporarytest:这个是bundleName
    // hsp_test1:这个是moduleName
    // ets/a_component_router/00_常用_常用展示示例/004_常用_使用命名路由和动态导入跳转/Page01:这个是目标页面在模块中的路径
    this.getUIContext().getRouter().pushUrl({
      url: '@bundle:com.example.temporarytest/hsp_test1/ets/a_component_router/00_常用_常用展示示例/004_常用_使用命名路由和动态导入跳转/Page01'
    });
  })

更多关于HarmonyOS鸿蒙Next中在hsp模块中使用pushUrl跳转同hsp模块的其他页面的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next中在hsp模块中使用pushUrl跳转同hsp模块的其他页面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用pushUrl进行页面跳转时,如果目标页面位于同一个HSP(HarmonyOS Shared Package)模块中,可以直接使用相对路径或绝对路径进行跳转。确保目标页面已正确配置路由,并在config.json中注册。示例代码如下:

router.pushUrl({
  url: 'pages/TargetPage' // 相对路径
});

router.pushUrl({
  url: 'hsp://com.example.mymodule/pages/TargetPage' // 绝对路径
});

确保目标页面的路由配置与pushUrl中的路径一致。

回到顶部