ui-next: url builder

This commit is contained in:
Baoshuo committed 2026-05-10 01:12:47 +08:00
1 parent 2bc1f5842e
commit 950910fa17
3 files changed
+34

No files matched your search

+1
View File
@@ -11,6 +11,7 @@
},
"dependencies": {
"koa2-connect": "^1.0.2",
"path-to-regexp": "^8.4.2",
"react": "^19.2.5",
"react-dom": "^19.2.5"
},
@@ -0,0 +1,6 @@
import { usePageData } from '../context/pageData';
export function useRouteMap(): Record<string, string> {
const data = usePageData();
return data.routeMap;
}
+27
View File
@@ -0,0 +1,27 @@
import { compile } from 'path-to-regexp';
import { useCallback } from 'react';
import { useRouteMap } from './useRouteMap';
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();
const url = 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]);
return url;
}