@@ -16,33 +16,47 @@ function isModifiedEvent(event) {
1616}
1717
1818const 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 */
5670const 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
0 commit comments