Skip to content

Commit 7f63ffe

Browse files
committed
Fix <Link> ref in React 15.6.2
Fixes remix-run#6954
1 parent e4e44ae commit 7f63ffe

File tree

2 files changed

+47
-29
lines changed

2 files changed

+47
-29
lines changed

packages/react-router-dom/modules/Link.js

Lines changed: 46 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,47 @@ function isModifiedEvent(event) {
1616
}
1717

1818
const LinkAnchor = forwardRef(
19-
({ innerRef, navigate, onClick, ...rest }, forwardedRef) => {
19+
(
20+
{
21+
innerRef, // TODO: deprecate
22+
navigate,
23+
onClick,
24+
...rest
25+
},
26+
forwardedRef
27+
) => {
2028
const { target } = rest;
2129

22-
return (
23-
<a
24-
{...rest}
25-
ref={forwardedRef || innerRef}
26-
onClick={event => {
27-
try {
28-
if (onClick) onClick(event);
29-
} catch (ex) {
30-
event.preventDefault();
31-
throw ex;
32-
}
33-
34-
if (
35-
!event.defaultPrevented && // onClick prevented default
36-
event.button === 0 && // ignore everything but left clicks
37-
(!target || target === "_self") && // let browser handle "target=_blank" etc.
38-
!isModifiedEvent(event) // ignore clicks with modifier keys
39-
) {
40-
event.preventDefault();
41-
navigate();
42-
}
43-
}}
44-
/>
45-
);
30+
let props = {
31+
...rest,
32+
onClick: event => {
33+
try {
34+
if (onClick) onClick(event);
35+
} catch (ex) {
36+
event.preventDefault();
37+
throw ex;
38+
}
39+
40+
if (
41+
!event.defaultPrevented && // onClick prevented default
42+
event.button === 0 && // ignore everything but left clicks
43+
(!target || target === "_self") && // let browser handle "target=_blank" etc.
44+
!isModifiedEvent(event) // ignore clicks with modifier keys
45+
) {
46+
event.preventDefault();
47+
navigate();
48+
}
49+
}
50+
};
51+
52+
// React 15 compat
53+
if (forwardRefShim !== forwardRef) {
54+
props.ref = forwardedRef || innerRef;
55+
} else {
56+
props.ref = innerRef;
57+
}
58+
59+
return <a {...props} />;
4660
}
4761
);
4862

@@ -55,7 +69,13 @@ if (__DEV__) {
5569
*/
5670
const Link = forwardRef(
5771
(
58-
{ component = LinkAnchor, replace, to, innerRef, ...rest },
72+
{
73+
component = LinkAnchor,
74+
replace,
75+
to,
76+
innerRef, // TODO: deprecate
77+
...rest
78+
},
5979
forwardedRef
6080
) => {
6181
return (
@@ -86,7 +106,6 @@ const Link = forwardRef(
86106
if (forwardRefShim !== forwardRef) {
87107
props.ref = forwardedRef || innerRef;
88108
} else {
89-
// TODO: deprecate
90109
props.innerRef = innerRef;
91110
}
92111

packages/react-router-dom/modules/NavLink.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const NavLink = forwardRef(
3232
strict,
3333
style: styleProp,
3434
to,
35-
innerRef,
35+
innerRef, // TODO: deprecate
3636
...rest
3737
},
3838
forwardedRef
@@ -80,7 +80,6 @@ const NavLink = forwardRef(
8080
if (forwardRefShim !== forwardRef) {
8181
props.ref = forwardedRef || innerRef;
8282
} else {
83-
// TODO: deprecate
8483
props.innerRef = innerRef;
8584
}
8685

0 commit comments

Comments
 (0)