HarmonyOS 鸿蒙Next开发中 如何利用Navigation组件实现跨模块的页面跳转

HarmonyOS 鸿蒙Next开发中 如何利用Navigation组件实现跨模块的页面跳转

在HarmonyOS Next开发中,如何利用Navigation组件实现跨模块的页面跳转?

3 回复

更多关于HarmonyOS 鸿蒙Next开发中 如何利用Navigation组件实现跨模块的页面跳转的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next开发中,利用Navigation组件实现跨模块的页面跳转,可以按照以下步骤操作:

  1. 配置路由表:在每个模块的config.json文件中,定义该模块提供的页面路由信息,包括页面路径、页面名称及需要的参数等。

  2. 注册路由:在应用的入口模块(通常是MainAbility所在的模块),通过IntentAbilityInfo将各模块的路由信息注册到系统。

  3. 启动目标页面:在需要进行跨模块跳转的页面代码中,构建带有目标页面路由信息的Intent,并通过startAbility方法启动目标页面。注意,这里的Intent需要设置正确的目标模块和页面路径。

  4. 处理参数传递:如果需要传递参数,可以在构建Intent时,通过putExtra方法将参数添加到Intent中。在目标页面,通过IntentgetXXXExtra方法获取传递的参数。

  5. 确保模块间通信:由于跨模块跳转涉及到不同模块间的通信,需要确保相关模块已经正确配置并能够通过系统路由进行通信。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

页面间参数传递

Navigation的页面间,通过NavPathInfo对象中的params属性,实现从发起页到目标页的数据传递;通过onPop回调参数,实现处理目标页面的返回。

Step1:构建NavPathInfo对象,输入需要传递给目标页面的参数。params参数:将需要传递的数据封装起来进行传递。onPop参数:目标页面触发pop时的返回,在回调中通过PopInfo.info.param获取到返回的对象。

// 发起页 mainPage

let loginParam : LoginParam = new LoginParam()

// 构建pathInfo对象

let pathInfo : NavPathInfo = new NavPathInfo('loginPage', loginParam

  , (popInfo: PopInfo) => {

    let loginParam : LoginParam = popInfo.info.param as LoginParam;

    ...

  })
  this.pageStack.pushDestination(pathInfo, true);    

// 讲参数传递到目标页



Step2:目标页面在NavDestination的onReady函数中,通过通过cxt.pathInfo.param,获取传递过来的参数。

build() {

  NavDestination(){

    ...

  }.hideTitleBar(true)

  .onReady(cxt => {

    this.loginParam = cxt.pathInfo.param as LoginParam;

    ...

  })

}
回到顶部