diff --git a/packages/remix-react/components.tsx b/packages/remix-react/components.tsx index b93baee5bb7..823534b70fe 100644 --- a/packages/remix-react/components.tsx +++ b/packages/remix-react/components.tsx @@ -202,12 +202,14 @@ let NavLink = React.forwardRef( props ); + let mergedRef = useMergedRef(forwardedRef, ref) + return ( <> {shouldPrefetch && !isAbsolute ? ( @@ -236,12 +238,14 @@ let Link = React.forwardRef( props ); + let mergedRef = useMergedRef(forwardedRef, ref) + return ( <> {shouldPrefetch && !isAbsolute ? ( @@ -1213,3 +1217,12 @@ function mergeRefs( }); }; } + +function useMergedRef( + ...refs: Array | React.LegacyRef> +): React.RefCallback { + let rs = refs.filter((r): r is React.Ref => !!r); + + // eslint-disable-next-line react-hooks/exhaustive-deps + return React.useCallback(mergeRefs(...rs), rs); +}