import { IReactRoute } from "../interfaces"; import { RouteMatch } from "react-router"; import { ClassComponent, ComponentName, TComponent, Type } from "@symph/core"; import { IReactRouteMeta } from "./react-route.decorator"; import * as H from "history"; export declare class ReactRouterService { protected routesMap: Map; protected routeTrees: T[]; private rootRouteNode; protected getRoutePathCacheKey({ path, index }: Pick): string; protected addRouteCache(route: T): void; protected removeRouteCache(route: T): void; protected getRouteCache(routePattern: Pick): T | undefined; getRoutes(): T[]; setRoutes(routes: T[]): void; private curLocation; get location(): H.Location; setCurrentLocation(location: H.Location): void; hasRouteByPath(route: T): T | undefined; addRoute(route: T): void; protected createElementWrapper(route: T): {}; /** * 删除路由 * @param routePath 匹配的路由路径,和注册的路由路径对比。 * @param rmChildren 是否同时删除其子路由 */ removeRoute(rmRoute: T, rmChildren?: boolean): T[] | undefined; protected refreshTree(): void; filterRoutes(predicate: (route: T) => boolean): T[]; private _filterRoute; private find; traverse(visitor: (route: T) => boolean | undefined): void; protected traverseTree(routes: T[], visitor: (route: T) => boolean | undefined): boolean | undefined; matchRoutes(pathname: string): RouteMatch[] | null; /** * 返回数组,前一个路由是后一个路由的父路由。 * @param pathname */ getMatchedRoutes(pathname: string): T[] | undefined; protected mergeRouteExtendState(to: T, from: T): void; addRouteProvider(provider: TComponent, basePath?: string): T[] | undefined; replaceRouteProvider(nextProvider: ClassComponent, preProviderName: string): { added: T[]; removed: T[]; modified: T[]; }; protected createFromMeta(path: string, providerName: ComponentName, providerPackage: string | undefined, meta: IReactRouteMeta, useClass: Type | Function): T; scanProvider(provider: TComponent): T[] | undefined; }