From ad49272dca13efbb6a9e4d540d23f6a029a9eae9 Mon Sep 17 00:00:00 2001 From: Baoshuo Date: Tue, 5 May 2026 11:36:32 +0800 Subject: [PATCH] ui-next: handle link navigation correctly --- packages/ui-next/src/components/link.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/ui-next/src/components/link.tsx b/packages/ui-next/src/components/link.tsx index 6389b77b2..e0ecce006 100644 --- a/packages/ui-next/src/components/link.tsx +++ b/packages/ui-next/src/components/link.tsx @@ -16,7 +16,7 @@ function isModifiedEvent(e: React.MouseEvent): boolean { return e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey; } -export const Link: React.FC> = ({ href, to, params, onClick, children, ...rest }) => { +export const Link: React.FC> = ({ href, to, params, onClick, target, download = false, children, ...rest }) => { const buildUrl = useUrl(); const navigate = useNavigate(); @@ -26,6 +26,8 @@ export const Link: React.FC> = ({ href, to, p (e: React.MouseEvent) => { onClick?.(e); if (e.defaultPrevented || isModifiedEvent(e)) return; + if (target && target !== '_self') return; + if (download) return; if (!isSameOrigin(resolvedHref)) return; if (resolvedHref.startsWith('#')) return; const resolved = new URL(resolvedHref, window.location.href); @@ -33,11 +35,11 @@ export const Link: React.FC> = ({ href, to, p e.preventDefault(); navigate(resolvedHref); }, - [onClick, resolvedHref, navigate], + [onClick, resolvedHref, navigate, target, download], ); return ( - + {children} );