#鸿蒙通关秘籍#如何实现自定义路由栈管理获取来源页面模块名?

HarmonyOS
3天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
墨舞涯CTP

要在鸿蒙应用中获取返回时的来源页面模块名,需要自己管理一个路由栈。可以通过以下方式实现:

  1. 声明自定义的路由栈和来源页字段:

typescript export class DynamicsRouter { static routerStack: Array<RouterModel> = new Array(); static referrer: string[] = []; }

  1. 注册路由时,将主页推入自定义路由栈:

typescript public static createRouter(router: NavPathStack): void { DynamicsRouter.navPathStack = router; let homeRouterModule = new RouterModel(); homeRouterModule.routerName = RouterInfo.HOME_PAGE[0]; homeRouterModule.path = RouterInfo.HOME_PAGE[1]; DynamicsRouter.routerStack.push(homeRouterModule); }

  1. 通过路由栈跳转到指定页面,并记录来源页信息:

typescript public static async push(router: RouterModel): Promise<void> { const path: string = router.path; const routerName: string = router.routerName; let param: string = router.param; await import(routerName).then( (ns: ESObject) => ns.harInit(path) ); DynamicsRouter.getRouter().pushPath({ name: routerName, param: param }); DynamicsRouter.routerStack.push(router); let referrerModel: RouterModel = DynamicsRouter.routerStack[DynamicsRouter.routerStack.length - 2]; DynamicsRouter.referrer[0] = referrerModel.routerName; DynamicsRouter.referrer[1] = referrerModel.path; }

通过以上步骤,在返回过程中便可通过 DynamicsRouter.referrer 获取来源页面模块名和路径名。

分享
微博
QQ
微信
回复
3天前
相关问题
自定义路由表的实现方法
431浏览 • 1回复 待解决