HarmonyOS 鸿蒙Next 使用了navigation之后,如何在工具类中使用路由

HarmonyOS 鸿蒙Next 使用了navigation之后,如何在工具类中使用路由 cke_237.png

如图所示,网络请反馈了具体的code码,我需要统一对code码进行业务逻辑处理,假如这里是跳转到登录页面,我需要怎么处理跳转逻辑?


更多关于HarmonyOS 鸿蒙Next 使用了navigation之后,如何在工具类中使用路由的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

单独封装一个module类就行了,在这个类里进行操作,参考demo:

import { RouterModel } from '../../model/RouterModel';
import { Logger } from '../util/Logger';
import { NavRouterName, RouterNameConstants } from './NavRouterBuilderName';

export class NavRouterModule {
  static builderMap: Map<string, WrappedBuilder<[object]>> = new Map<string, WrappedBuilder<[object]>>();
  static routerMap: Map<string, NavPathStack> = new Map<string, NavPathStack>();

  // Registering a builder by name.
  public static registerBuilder(builderName: string, builder: WrappedBuilder<[object]>): void {
    NavRouterModule.builderMap.set(builderName, builder);
  }

  // Get builder by name.
  public static getBuilder(builderName: string): WrappedBuilder<[object]> {
    const builder = NavRouterModule.builderMap.get(builderName);
    if (!builder) {
      Logger.info('not found builder ' + builderName);
    }
    return builder as WrappedBuilder<[object]>;
  }

  // Registering a router by name.
  public static createRouter(routerName: string, router: NavPathStack): void {
    NavRouterModule.routerMap.set(routerName, router);
  }

  // Get router by name.
  public static getRouter(routerName: string): NavPathStack {
    return NavRouterModule.routerMap.get(routerName) as NavPathStack;
  }

  // Jumping to a Specified Page by Obtaining the Page Stack.
  public static async push(router: RouterModel): Promise<void> {
    // Dynamically import the page to be redirected to.
    NavRouterModule.getRouter(router.routerName).pushPath({ name: router.builderName, param: router.param });
  }

  public static async replace(router: RouterModel): Promise<void> {
    NavRouterModule.getRouter(router.routerName).replacePath({ name: router.builderName, param: router.param})
  }

  // Obtain the page stack and pop it.
  public static pop(routerName: string, result?: object): void {
    // Find the corresponding route stack for pop.
    NavRouterModule.getRouter(routerName).pop(result);
  }

  // Get the page stack and clear it.
  public static clear(routerName: string): void {
    // Find the corresponding route stack for pop.
    NavRouterModule.getRouter(routerName).clear();
  }

  // Directly jump to the specified route.
  public static popToName(routerName: string, builderName: string): void {
    NavRouterModule.getRouter(routerName).popToName(builderName);
  }

  // Create routing information and put it into the routing stack table.
  public static navRouterPush(routerName: string, builderName: string, param?: object) {
    let router: RouterModel = new RouterModel();
    router.builderName = builderName;
    router.routerName = routerName;
    router.param = param;
    NavRouterModule.push(router);
  }

  public static navRouterReplace(routerName: string, builderName: string, param?: object) {
    let router: RouterModel = new RouterModel();
    router.builderName = builderName;
    router.routerName = routerName;
    router.param = param;
    NavRouterModule.replace(router);
  }

  public static mainNavRouterPush(builderName: string, param?: object) {
    NavRouterModule.navRouterPush(RouterNameConstants.NAV_SPLASH_ROUTER, builderName, param)
  }

  public static mainNavRouterReplace(builderName: string, param?: object) {
    NavRouterModule.navRouterReplace(RouterNameConstants.NAV_SPLASH_ROUTER, builderName, param)
  }

  public static mainNavRouterPop() {
    NavRouterModule.pop(RouterNameConstants.NAV_SPLASH_ROUTER)
  }
}

你这种跳转到登录页无非就是调用一下工具类的mainNavRouterPush方法罢了

更多关于HarmonyOS 鸿蒙Next 使用了navigation之后,如何在工具类中使用路由的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,如果你在使用navigation(导航)功能后希望在工具类中使用路由,你可以通过以下方式实现:

HarmonyOS提供了路由能力,允许在不同页面或组件之间进行跳转。通常,这种路由能力是通过Ability(能力)或Page(页面)的实例来实现的。在工具类中,由于不直接持有这些实例,你需要通过依赖注入、全局变量或者服务来获取路由相关的上下文或能力。

一种常见的方法是利用全局的路由管理器。你可以创建一个单例模式的路由管理器类,该类负责维护路由表,并提供静态方法来进行页面跳转。在工具类中,你可以直接调用这个路由管理器的静态方法来实现路由跳转。

例如,你可以定义一个RouterManager类,其中包含一个静态方法navigateTo(String destination),该方法根据目的地的标识符执行相应的跳转逻辑。在工具类中,当你需要跳转时,只需调用RouterManager.navigateTo("someDestination")即可。

请注意,这种实现方式需要你确保路由管理器在整个应用生命周期内的有效性和正确性。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部