@@ -290,6 +290,10 @@ function usePrefetchBehavior(
290
290
*/
291
291
let NavLink = React . forwardRef < HTMLAnchorElement , RemixNavLinkProps > (
292
292
( { to, prefetch = "none" , ...props } , forwardedRef ) => {
293
+ let isAbsolute =
294
+ typeof to === "string" &&
295
+ ( / ^ [ a - z + ] + : \/ \/ / i. test ( to ) || to . startsWith ( "//" ) ) ;
296
+
293
297
let href = useHref ( to ) ;
294
298
let [ shouldPrefetch , prefetchHandlers ] = usePrefetchBehavior (
295
299
prefetch ,
@@ -303,13 +307,16 @@ let NavLink = React.forwardRef<HTMLAnchorElement, RemixNavLinkProps>(
303
307
{ ...props }
304
308
{ ...prefetchHandlers }
305
309
/>
306
- { shouldPrefetch ? < PrefetchPageLinks page = { href } /> : null }
310
+ { shouldPrefetch && ! isAbsolute ? (
311
+ < PrefetchPageLinks page = { href } />
312
+ ) : null }
307
313
</ >
308
314
) ;
309
315
}
310
316
) ;
311
317
NavLink . displayName = "NavLink" ;
312
318
export { NavLink } ;
319
+
313
320
/**
314
321
* This component renders an anchor tag and is the primary way the user will
315
322
* navigate around your website.
@@ -318,11 +325,16 @@ export { NavLink };
318
325
*/
319
326
let Link = React . forwardRef < HTMLAnchorElement , RemixLinkProps > (
320
327
( { to, prefetch = "none" , ...props } , forwardedRef ) => {
328
+ let isAbsolute =
329
+ typeof to === "string" &&
330
+ ( / ^ [ a - z + ] + : \/ \/ / i. test ( to ) || to . startsWith ( "//" ) ) ;
331
+
321
332
let href = useHref ( to ) ;
322
333
let [ shouldPrefetch , prefetchHandlers ] = usePrefetchBehavior (
323
334
prefetch ,
324
335
props
325
336
) ;
337
+
326
338
return (
327
339
< >
328
340
< RouterLink
@@ -331,7 +343,9 @@ let Link = React.forwardRef<HTMLAnchorElement, RemixLinkProps>(
331
343
{ ...props }
332
344
{ ...prefetchHandlers }
333
345
/>
334
- { shouldPrefetch ? < PrefetchPageLinks page = { href } /> : null }
346
+ { shouldPrefetch && ! isAbsolute ? (
347
+ < PrefetchPageLinks page = { href } />
348
+ ) : null }
335
349
</ >
336
350
) ;
337
351
}
0 commit comments