欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 鸿蒙路由 HMRouter 配置及使用 二

鸿蒙路由 HMRouter 配置及使用 二

2025/3/19 19:50:01 来源:https://blog.csdn.net/liux6687/article/details/146314424  浏览:    关键词:鸿蒙路由 HMRouter 配置及使用 二

1、路由跳转

创建测试页面OnePage

import { HMRouter } from "@hadss/hmrouter";@HMRouter({pageUrl: "OnePage",
})
@Component
export struct OnePage {build() {Column() {Text("测试页面 - OnePage").fontSize(30).fontWeight(FontWeight.Bold)}}
}

首页添加页面跳转按钮

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

跳转方法参数说明

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

 

2、参数接收

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

@State param: HMPageParam = HMRouterMgr.getCurrentParam(HMParamType.all) as HMPageParamaboutToAppear(): 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"]
})

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词