diff --git a/packages/router/src/react/components.tsx b/packages/router/src/react/components.tsx index 3fe71fe..b12daa9 100644 --- a/packages/router/src/react/components.tsx +++ b/packages/router/src/react/components.tsx @@ -178,7 +178,7 @@ export const Link =
(props: LinkProps
): ReactNode => { const anchorProps = { ...rest, ref: mergeRefs(ref, rest.ref), - href: url, + href: router.history.createHref?.(url) ?? url, onClick, onFocus: intentEvent(schedulePreload, rest.onFocus), onBlur: intentEvent(cancelPreload, rest.onBlur), diff --git a/packages/router/src/router/browser-history.ts b/packages/router/src/router/browser-history.ts index c778528..2c7ad9b 100644 --- a/packages/router/src/router/browser-history.ts +++ b/packages/router/src/router/browser-history.ts @@ -38,6 +38,8 @@ export class BrowserHistory implements HistoryLike { history[replace ? replaceStateEvent : pushStateEvent](state, "", url); }; + createHref = (url: string) => url; + subscribe = (listener: () => void) => { events.forEach(event => addEventListener(event, listener)); return () => { diff --git a/packages/router/src/router/hash-history.ts b/packages/router/src/router/hash-history.ts index 967bfc8..ed44fd7 100644 --- a/packages/router/src/router/hash-history.ts +++ b/packages/router/src/router/hash-history.ts @@ -11,4 +11,6 @@ export class HashHistory extends BrowserHistory { const { url, replace, state } = options; history[replace ? "replaceState" : "pushState"](state, "", `#${url}`); }; + + createHref = (url: string) => `#${url}`; } diff --git a/packages/router/src/router/memory-history.ts b/packages/router/src/router/memory-history.ts index bfbce46..9e4b226 100644 --- a/packages/router/src/router/memory-history.ts +++ b/packages/router/src/router/memory-history.ts @@ -36,6 +36,8 @@ export class MemoryHistory implements HistoryLike { this.listeners.forEach(listener => listener()); }; + createHref = (url: string) => url; + subscribe = (listener: () => void) => { this.listeners.add(listener); return () => { diff --git a/packages/router/src/types.ts b/packages/router/src/types.ts index cfebd35..331e0bb 100644 --- a/packages/router/src/types.ts +++ b/packages/router/src/types.ts @@ -122,6 +122,7 @@ export interface HistoryLike { location: () => HistoryLocation; go: (delta: number) => void; push: (options: HistoryPushOptions) => void; + createHref?: (url: string) => string; subscribe: (listener: () => void) => () => void; }