【HarmonyOS】HMRouter使用详解(一)情况设置

打印 上一主题 下一主题

主题 986|帖子 986|积分 2958

背景


在项目中使用官方保举的Navigation时,必要在全部的页面上都添加一层NavDestination,在代码阅读上会增加多个层级,而且还要在主页面设置对应名字的跳转等问题,设置起来比力繁琐。看到大佬开发的HMRouter使用起来方便简洁,因此,写下这篇文章记录HMRouter的使用。
插件设置


1.HMRouter安装

在终端中运行下面命令举行第三方库的安装。
  1. ohpm install @hadss/hmrouter
复制代码


2.添加路由编译插件

修改项目的hvigor/hvigor-config.json文件中的dependencies数组。
  1. "dependencies": {
  2.     "@hadss/hmrouter-plugin": "^1.0.0-rc.6"
  3.   },
复制代码

3.使用路由编译插件

在项目的entry/hvigorfile.ts文件中添加插件的使用。如果模块是Har则使用harPlugin(),模块是Hsp则使用hspPlugin()
4.工程设置

由于拦截器、生命周期和自界说转场动画会在运行时动态创建实例,因此必要举行如下设置,使得HMRouter路由框架可以动态导入项目中的模块。
在工程目次下的build-profile.json5中,设置useNormalizedOHMUrl属性为true。

HMRouter使用


在UIAbility中初始化路由框架

在OnCreate中初始化路由框架。
  1. import { HMRouterMgr } from '@hadss/hmrouter';
  2. onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  3.     HMRouterMgr.init({
  4.       context: this.context
  5.     })
  6.     hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  7.   }
复制代码
在首页中界说路由入口

自界说一个NavModifier类,继承AttributeUpdater
  1. class NavModifier extends AttributeUpdater<NavigationAttribute> {
  2.   initializeModifier(instance: NavigationAttribute): void {
  3.     instance.mode(NavigationMode.Stack);
  4.     instance.navBarWidth('100%');
  5.     instance.hideTitleBar(true);
  6.     instance.hideToolBar(true);
  7.   }
  8. }
复制代码
然后编写页面代码
  1. import { HMDefaultGlobalAnimator, HMNavigation, HMRouter, HMRouterMgr } from '@hadss/hmrouter';
  2. import { AttributeUpdater } from '@kit.ArkUI';
  3. import {PageModel} from '../../Models/PageModel'
  4. @Entry
  5. @Component
  6. struct HomePage {
  7.   modifier: NavModifier = new NavModifier();
  8.   build() {
  9.     Column() {
  10.       // 使用HMNavigation容器
  11.       HMNavigation({
  12.         navigationId: 'mainNavigation', options: {
  13.           standardAnimator: HMDefaultGlobalAnimator.STANDARD_ANIMATOR,
  14.           dialogAnimator: HMDefaultGlobalAnimator.DIALOG_ANIMATOR,
  15.           modifier: this.modifier
  16.         }
  17.       }) {
  18.         Column({space:20}) {
  19.           Button("TwoPage")
  20.             .width("80%")
  21.             .onClick(() => {
  22.               HMRouterMgr.push({
  23.                 navigationId: "mainNavigation",
  24.                 pageUrl: "TwoPage"
  25.               })
  26.             })
  27.         }
  28.         .width('100%')
  29.         .height('100%')
  30.       }
  31.     }
  32.     .height('100%')
  33.     .width('100%')
  34.   }
  35. }
复制代码
HMNavigation 参数解析


  • navigationId :容器ID而且全局同一
  • homePageUrl:指定默认加载的页面
  • navigationOption:全局参数设置。

    • modifier:Navigation动态属性设置
    • standardAnimator:页面全局动画设置
    • dialogAnimator:弹窗全局动画设置
    • title:navigation的Title设置
    • menus:navigation的menus设置
    • toolbar:navigation的toolbar设置
    • systemBarStyle:navigation的systemBarStyle设置

页面设置

新建跳转的页面TwoPage,里面按钮使用HMRouterMgr.pop方法实现返回上个页面的操纵。
必须加上@HMRouter装饰器,pageUrl方法来界说页面的名称
  1. import { HMRouter, HMRouterMgr } from '@hadss/hmrouter'
  2. @HMRouter({ pageUrl: "TwoPage" })
  3. @Component
  4. export struct TwoPage {
  5.   build() {
  6.     Column({ space: 20 }) {
  7.       Button("HomePage")
  8.         .width("80%")
  9.         .onClick(() => {
  10.           HMRouterMgr.pop({
  11.             navigationId: "mainNavigation"
  12.           })
  13.         })
  14.     }
  15.     .height("100%")
  16.     .width("100%")
  17.   }
  18. }
复制代码
总结


这篇帖子重要关注在HMRouter的情况摆设和简单的页面跳转

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表