Files
Hydro/packages/ui-next/src/hooks/use-url.ts
T
2026-05-10 01:12:47 +08:00

26 lines
715 B
TypeScript

import { compile } from 'path-to-regexp';
import { useCallback } from 'react';
import { useRouteMap } from './use-route-map';
function buildUrl(pattern: string, params: Record<string, string> = {}): string {
try {
return compile(pattern)(params);
} catch (err) {
console.warn(`[Hydro] Failed to build URL for pattern "${pattern}":`, err);
return '#';
}
}
export function useUrl() {
const routeMap = useRouteMap();
return useCallback((name: string, params: Record<string, string> = {}): string => {
const pattern = routeMap[name];
if (!pattern) {
console.warn(`[Hydro] Unknown route: ${name}`);
return '#';
}
return buildUrl(pattern, params);
}, [routeMap]);
}