@@ -72,16 +72,18 @@ describe('ReactCompositeComponent', () => {
72
72
MorphingComponent = class extends React . Component {
73
73
state = { activated : false } ;
74
74
75
+ xRef = React . createRef ( ) ;
76
+
75
77
_toggleActivatedState = ( ) => {
76
78
this . setState ( { activated : ! this . state . activated } ) ;
77
79
} ;
78
80
79
81
render ( ) {
80
82
const toggleActivatedState = this . _toggleActivatedState ;
81
83
return ! this . state . activated ? (
82
- < a ref = "x" onClick = { toggleActivatedState } />
84
+ < a ref = { this . xRef } onClick = { toggleActivatedState } />
83
85
) : (
84
- < b ref = "x" onClick = { toggleActivatedState } />
86
+ < b ref = { this . xRef } onClick = { toggleActivatedState } />
85
87
) ;
86
88
}
87
89
} ;
@@ -91,14 +93,16 @@ describe('ReactCompositeComponent', () => {
91
93
* reallocated again.
92
94
*/
93
95
ChildUpdates = class extends React . Component {
96
+ anchorRef = React . createRef ( ) ;
97
+
94
98
getAnchor = ( ) => {
95
- return this . refs . anch ;
99
+ return this . anchorRef . current ;
96
100
} ;
97
101
98
102
render ( ) {
99
103
const className = this . props . anchorClassOn ? 'anchorClass' : '' ;
100
104
return this . props . renderAnchor ? (
101
- < a ref = "anch" className = { className } />
105
+ < a ref = { this . anchorRef } className = { className } />
102
106
) : (
103
107
< b />
104
108
) ;
@@ -186,11 +190,11 @@ describe('ReactCompositeComponent', () => {
186
190
it ( 'should rewire refs when rendering to different child types' , ( ) => {
187
191
const instance = ReactTestUtils . renderIntoDocument ( < MorphingComponent /> ) ;
188
192
189
- expect ( instance . refs . x . tagName ) . toBe ( 'A' ) ;
193
+ expect ( instance . xRef . current . tagName ) . toBe ( 'A' ) ;
190
194
instance . _toggleActivatedState ( ) ;
191
- expect ( instance . refs . x . tagName ) . toBe ( 'B' ) ;
195
+ expect ( instance . xRef . current . tagName ) . toBe ( 'B' ) ;
192
196
instance . _toggleActivatedState ( ) ;
193
- expect ( instance . refs . x . tagName ) . toBe ( 'A' ) ;
197
+ expect ( instance . xRef . current . tagName ) . toBe ( 'A' ) ;
194
198
} ) ;
195
199
196
200
it ( 'should not cache old DOM nodes when switching constructors' , ( ) => {
@@ -739,25 +743,28 @@ describe('ReactCompositeComponent', () => {
739
743
}
740
744
741
745
class Wrapper extends React . Component {
746
+ parentRef = React . createRef ( ) ;
747
+ childRef = React . createRef ( ) ;
748
+
742
749
render ( ) {
743
750
return (
744
- < Parent ref = "parent" >
745
- < Child ref = "child" />
751
+ < Parent ref = { this . parentRef } >
752
+ < Child ref = { this . childRef } />
746
753
</ Parent >
747
754
) ;
748
755
}
749
756
}
750
757
751
758
const wrapper = ReactTestUtils . renderIntoDocument ( < Wrapper /> ) ;
752
759
753
- expect ( wrapper . refs . parent . state . flag ) . toEqual ( true ) ;
754
- expect ( wrapper . refs . child . context ) . toEqual ( { flag : true } ) ;
760
+ expect ( wrapper . parentRef . current . state . flag ) . toEqual ( true ) ;
761
+ expect ( wrapper . childRef . current . context ) . toEqual ( { flag : true } ) ;
755
762
756
763
// We update <Parent /> while <Child /> is still a static prop relative to this update
757
- wrapper . refs . parent . setState ( { flag : false } ) ;
764
+ wrapper . parentRef . current . setState ( { flag : false } ) ;
758
765
759
- expect ( wrapper . refs . parent . state . flag ) . toEqual ( false ) ;
760
- expect ( wrapper . refs . child . context ) . toEqual ( { flag : false } ) ;
766
+ expect ( wrapper . parentRef . current . state . flag ) . toEqual ( false ) ;
767
+ expect ( wrapper . childRef . current . context ) . toEqual ( { flag : false } ) ;
761
768
} ) ;
762
769
763
770
it ( 'should pass context transitively' , ( ) => {
@@ -1142,25 +1149,28 @@ describe('ReactCompositeComponent', () => {
1142
1149
}
1143
1150
1144
1151
class Component extends React . Component {
1152
+ static0Ref = React . createRef ( ) ;
1153
+ static1Ref = React . createRef ( ) ;
1154
+
1145
1155
render ( ) {
1146
1156
if ( this . props . flipped ) {
1147
1157
return (
1148
1158
< div >
1149
- < Static ref = "static0" key = "B" >
1159
+ < Static ref = { this . static0Ref } key = "B" >
1150
1160
B (ignored)
1151
1161
</ Static >
1152
- < Static ref = "static1" key = "A" >
1162
+ < Static ref = { this . static1Ref } key = "A" >
1153
1163
A (ignored)
1154
1164
</ Static >
1155
1165
</ div >
1156
1166
) ;
1157
1167
} else {
1158
1168
return (
1159
1169
< div >
1160
- < Static ref = "static0" key = "A" >
1170
+ < Static ref = { this . static0Ref } key = "A" >
1161
1171
A
1162
1172
</ Static >
1163
- < Static ref = "static1" key = "B" >
1173
+ < Static ref = { this . static1Ref } key = "B" >
1164
1174
B
1165
1175
</ Static >
1166
1176
</ div >
@@ -1171,14 +1181,14 @@ describe('ReactCompositeComponent', () => {
1171
1181
1172
1182
const container = document . createElement ( 'div' ) ;
1173
1183
const comp = ReactDOM . render ( < Component flipped = { false } /> , container ) ;
1174
- expect ( ReactDOM . findDOMNode ( comp . refs . static0 ) . textContent ) . toBe ( 'A' ) ;
1175
- expect ( ReactDOM . findDOMNode ( comp . refs . static1 ) . textContent ) . toBe ( 'B' ) ;
1184
+ expect ( ReactDOM . findDOMNode ( comp . static0Ref . current ) . textContent ) . toBe ( 'A' ) ;
1185
+ expect ( ReactDOM . findDOMNode ( comp . static1Ref . current ) . textContent ) . toBe ( 'B' ) ;
1176
1186
1177
1187
// When flipping the order, the refs should update even though the actual
1178
1188
// contents do not
1179
1189
ReactDOM . render ( < Component flipped = { true } /> , container ) ;
1180
- expect ( ReactDOM . findDOMNode ( comp . refs . static0 ) . textContent ) . toBe ( 'B' ) ;
1181
- expect ( ReactDOM . findDOMNode ( comp . refs . static1 ) . textContent ) . toBe ( 'A' ) ;
1190
+ expect ( ReactDOM . findDOMNode ( comp . static0Ref . current ) . textContent ) . toBe ( 'B' ) ;
1191
+ expect ( ReactDOM . findDOMNode ( comp . static1Ref . current ) . textContent ) . toBe ( 'A' ) ;
1182
1192
} ) ;
1183
1193
1184
1194
it ( 'should allow access to findDOMNode in componentWillUnmount' , ( ) => {
@@ -1453,10 +1463,11 @@ describe('ReactCompositeComponent', () => {
1453
1463
this . state = {
1454
1464
color : 'green' ,
1455
1465
} ;
1466
+ this . appleRef = React . createRef ( ) ;
1456
1467
}
1457
1468
1458
1469
render ( ) {
1459
- return < Apple color = { this . state . color } ref = "apple" /> ;
1470
+ return < Apple color = { this . state . color } ref = { this . appleRef } /> ;
1460
1471
}
1461
1472
}
1462
1473
@@ -1502,15 +1513,15 @@ describe('ReactCompositeComponent', () => {
1502
1513
expect ( renderCalls ) . toBe ( 2 ) ;
1503
1514
1504
1515
// Re-render base on state
1505
- instance . refs . apple . cut ( ) ;
1516
+ instance . appleRef . current . cut ( ) ;
1506
1517
expect ( renderCalls ) . toBe ( 3 ) ;
1507
1518
1508
1519
// No re-render based on state
1509
- instance . refs . apple . cut ( ) ;
1520
+ instance . appleRef . current . cut ( ) ;
1510
1521
expect ( renderCalls ) . toBe ( 3 ) ;
1511
1522
1512
1523
// Re-render based on state again
1513
- instance . refs . apple . eatSlice ( ) ;
1524
+ instance . appleRef . current . eatSlice ( ) ;
1514
1525
expect ( renderCalls ) . toBe ( 4 ) ;
1515
1526
} ) ;
1516
1527
0 commit comments