#鸿蒙通关秘籍#如何在鸿蒙应用中记录自定义动态路由栈来源页?

HarmonyOS
3天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
紫云追月VR

如果在开发鸿蒙应用中需要根据不同来源页展示不同的UI,用自定义路由栈是个不错的解决方案。实现步骤如下:

  1. 创建自定义路由栈:

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

  1. 路由跳转时,将当前页面压入栈,并记录来源页面:

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

  1. 用户返回上一页时,也要处理好来源页信息:

typescript public static pop(): void { let referrerModel: RouterModel = DynamicsRouter.routerStack[DynamicsRouter.routerStack.length - 1]; DynamicsRouter.referrer[0] = referrerModel.routerName; DynamicsRouter.referrer[1] = referrerModel.path; if (DynamicsRouter.routerStack.length > 1) { DynamicsRouter.routerStack.pop(); } DynamicsRouter.getRouter().pop(); }

通过以上步骤,在页面返回时,DynamicsRouter.referrer 可以保存来源页的信息,方便在UI展示时使用。

分享
微博
QQ
微信
回复
3天前
相关问题