当前位置: 首页 > news >正文

鸿蒙路由 HMRouter 配置及使用 二

1、路由跳转

创建测试页面OnePage

import { HMRouter } from "@hadss/hmrouter";

@HMRouter({
  pageUrl: "OnePage",
})
@Component
export struct OnePage {

  build() {
    Column() {
      Text("测试页面 - OnePage").fontSize(30).fontWeight(FontWeight.Bold)
    }
  }
}

首页添加页面跳转按钮

// 跳转按钮 - OnePage
     Button("跳转到 - OnePage").onClick((event: ClickEvent) => {
        HMRouterMgr.push({
          pageUrl: "OnePage",
          param: {
            name: "张三",
            age: 18
          }
        })
      })

跳转方法参数说明

HMRouterMgr.push({
 navigationId?: string; // 指定导航HMNavigation的navigationId
 pageUrl?: string; // push到哪个页面
 param?: ESObject; // 传参对象
 interceptors?: IHMInterceptor[]; // 指定路由拦截器
 animator?: IHMAnimator | boolean; // 指定跳转动画
 skipAllInterceptor?: boolean; // 是否跳过路由拦截
})

 

2、参数接收

在OnePage页面 通过getCurrentParam获取当前路由

@State param: HMPageParam = HMRouterMgr.getCurrentParam(HMParamType.all) as HMPageParam

  aboutToAppear(): void {
    console.log("OnePage aboutToAppear" + JSON.stringify(this.param))
  }

3、路由拦截器

创建拦截器目录及OnePage拦截器 ,拦截器需要实现IHMInterceptor接口并通过@HMInterceptor注解添加拦截器信息。

@HMInterceptor注解参数说明

IHMInterceptor接口需要实现handle方法。handle方法参数可以获取路由信息,方法返回值必须是一个HMInterceptorAction枚举。

import { HMInterceptor, HMInterceptorAction, HMInterceptorInfo,
  HMRouterPathInfo,
  IHMInterceptor } from '@hadss/hmrouter';

@HMInterceptor({ interceptorName: "OnePageInterceptor" })
export class OnePageInterceptor implements IHMInterceptor {
  handle(info: HMInterceptorInfo): HMInterceptorAction {
    const routerPathInfo: HMRouterPathInfo = info.routerPathInfo;
    // 如果是张三 停止跳转
    if(routerPathInfo.param?.name === "张三") {
      console.log("OnePageInterceptor - 张三 停止跳转")
      return HMInterceptorAction.DO_REJECT;
    }else {
      // 继续向下执行
      console.log("OnePageInterceptor - 继续向下执行")
      return HMInterceptorAction.DO_NEXT
    }
  }
}

 

在OnePage页面使用拦截器 

@HMRouter({
  pageUrl: "OnePage",
  interceptors: ["OnePageInterceptor"]
})

http://www.dtcms.com/a/80788.html

相关文章:

  • Postgresql无法连接问题汇总
  • Python直方图:从核密度估计到高维空间解析
  • 解决项目使用eslint+prettier,启动报错: error Delete `␍` prettier/prettier
  • Vulnhub-wordpress通关攻略
  • CentOS系类普通挂载磁盘挂载命令
  • 云上 Redis 迁移至本地机房
  • Kafka consumer_offsets 主题深度剖析
  • LabVIEW运动控制(二):EtherCAT运动控制器的多轴示教加工应用(下)
  • npm 命令使用文档
  • 如何在PDF中嵌入数据
  • Excel处理控件Spire.XLS系列教程:C# 在 Excel 中添加或删除单元格边框
  • 【RabbitMQ】RabbitMQ如何保证消息不丢失?
  • sqlite3
  • Linux 音频驱动 WM8960 音频 DAC IC 音乐播放与录音
  • 第四周日志-用网络请求理解bp(2)
  • 华为OD机试-会议室占用时间段(Java 2024 C卷 100分)
  • Rust语言学习
  • 体育直播视频源格式解析:M3U8 vs FLV
  • mysql中find_in_set()函数用法详解及增强函数
  • mysql-DELETE、DROP 和 TRUNCATE区别
  • deepSpeed多机多卡训练服务器之间,和服务器内两个GPU是怎么通信
  • Linux 系统性能优化高级全流程指南
  • 免费开源的NAS解决方案:TrueNAS
  • 工厂方法模式、简单工厂模式与抽象工厂模式的对比
  • 正则表达式:文本处理的瑞士军刀
  • 如何在云端平台上建立 30,000 名用户的网页 MMO游戏环境-2 (服务器)
  • 【工业现场总线】控制网络的主要特点是?OSI参考模型的分层是?
  • `chromadb` 是什么
  • hive 数据简介
  • C++通过宏将任何内容转成字符串的方式