Files
vhAstro-Theme/src/utils/updateRouter.ts
T
2025-02-12 10:09:30 +08:00

17 lines
915 B
TypeScript

type RouterEventKey = "beforeCreate" | "created" | "beforeMount" | "mounted" | "afterMount";
type RouterEventName = "astro:before-preparation" | "astro:after-preparation" | "astro:before-swap" | "astro:after-swap" | "astro:page-load";
type EventHandler = (event: Event) => void;
// 路由事件映射
const routerFn: Record<RouterEventKey, RouterEventName> = { beforeCreate: 'astro:before-preparation', created: 'astro:after-preparation', beforeMount: 'astro:before-swap', mounted: 'astro:after-swap', afterMount: 'astro:page-load' };
const updateRouter = (key: RouterEventKey, handler: EventHandler) => {
const eventName = routerFn[key];
if (!eventName) {
throw new Error(`Invalid key ${key} for router update. Valid keys are: ${Object.keys(routerFn).join(", ")}.`);
}
document.removeEventListener(eventName, handler);
document.addEventListener(eventName, handler);
};
export default updateRouter;