@@ -182,10 +182,7 @@ describe('ReactDOMFiber', () => {
182
182
var expectMath = { ref : el => mathEls . push ( el ) } ;
183
183
184
184
var usePortal = function ( tree ) {
185
- return ReactDOM . unstable_createPortal (
186
- tree ,
187
- document . createElement ( 'div' ) ,
188
- ) ;
185
+ return ReactDOM . createPortal ( tree , document . createElement ( 'div' ) ) ;
189
186
} ;
190
187
191
188
var assertNamespacesMatch = function ( tree ) {
@@ -212,6 +209,24 @@ describe('ReactDOMFiber', () => {
212
209
it ( 'should render one portal' , ( ) => {
213
210
var portalContainer = document . createElement ( 'div' ) ;
214
211
212
+ ReactDOM . render (
213
+ < div >
214
+ { ReactDOM . createPortal ( < div > portal</ div > , portalContainer ) }
215
+ </ div > ,
216
+ container ,
217
+ ) ;
218
+ expect ( portalContainer . innerHTML ) . toBe ( '<div>portal</div>' ) ;
219
+ expect ( container . innerHTML ) . toBe ( '<div></div>' ) ;
220
+
221
+ ReactDOM . unmountComponentAtNode ( container ) ;
222
+ expect ( portalContainer . innerHTML ) . toBe ( '' ) ;
223
+ expect ( container . innerHTML ) . toBe ( '' ) ;
224
+ } ) ;
225
+
226
+ // TODO: remove in React 17
227
+ it ( 'should support unstable_createPortal alias' , ( ) => {
228
+ var portalContainer = document . createElement ( 'div' ) ;
229
+
215
230
ReactDOM . render (
216
231
< div >
217
232
{ ReactDOM . unstable_createPortal ( < div > portal</ div > , portalContainer ) }
@@ -260,12 +275,12 @@ describe('ReactDOMFiber', () => {
260
275
const { step} = this . props ;
261
276
return [
262
277
< Child key = "a" name = { `normal[0]:${ step } ` } /> ,
263
- ReactDOM . unstable_createPortal (
278
+ ReactDOM . createPortal (
264
279
< Child key = "b" name = { `portal1[0]:${ step } ` } /> ,
265
280
portalContainer1 ,
266
281
) ,
267
282
< Child key = "c" name = { `normal[1]:${ step } ` } /> ,
268
- ReactDOM . unstable_createPortal (
283
+ ReactDOM . createPortal (
269
284
[
270
285
< Child key = "d" name = { `portal2[0]:${ step } ` } /> ,
271
286
< Child key = "e" name = { `portal2[1]:${ step } ` } /> ,
@@ -334,14 +349,14 @@ describe('ReactDOMFiber', () => {
334
349
ReactDOM . render (
335
350
[
336
351
< div key = "a" > normal[0]</ div > ,
337
- ReactDOM . unstable_createPortal (
352
+ ReactDOM . createPortal (
338
353
[
339
354
< div key = "b" > portal1[0]</ div > ,
340
- ReactDOM . unstable_createPortal (
355
+ ReactDOM . createPortal (
341
356
< div key = "c" > portal2[0]</ div > ,
342
357
portalContainer2 ,
343
358
) ,
344
- ReactDOM . unstable_createPortal (
359
+ ReactDOM . createPortal (
345
360
< div key = "d" > portal3[0]</ div > ,
346
361
portalContainer3 ,
347
362
) ,
@@ -374,7 +389,7 @@ describe('ReactDOMFiber', () => {
374
389
375
390
ReactDOM . render (
376
391
< div >
377
- { ReactDOM . unstable_createPortal ( < div > portal:1</ div > , portalContainer ) }
392
+ { ReactDOM . createPortal ( < div > portal:1</ div > , portalContainer ) }
378
393
</ div > ,
379
394
container ,
380
395
) ;
@@ -383,7 +398,7 @@ describe('ReactDOMFiber', () => {
383
398
384
399
ReactDOM . render (
385
400
< div >
386
- { ReactDOM . unstable_createPortal ( < div > portal:2</ div > , portalContainer ) }
401
+ { ReactDOM . createPortal ( < div > portal:2</ div > , portalContainer ) }
387
402
</ div > ,
388
403
container ,
389
404
) ;
@@ -392,7 +407,7 @@ describe('ReactDOMFiber', () => {
392
407
393
408
ReactDOM . render (
394
409
< div >
395
- { ReactDOM . unstable_createPortal ( < p > portal:3</ p > , portalContainer ) }
410
+ { ReactDOM . createPortal ( < p > portal:3</ p > , portalContainer ) }
396
411
</ div > ,
397
412
container ,
398
413
) ;
@@ -401,7 +416,7 @@ describe('ReactDOMFiber', () => {
401
416
402
417
ReactDOM . render (
403
418
< div >
404
- { ReactDOM . unstable_createPortal ( [ 'Hi' , 'Bye' ] , portalContainer ) }
419
+ { ReactDOM . createPortal ( [ 'Hi' , 'Bye' ] , portalContainer ) }
405
420
</ div > ,
406
421
container ,
407
422
) ;
@@ -410,7 +425,7 @@ describe('ReactDOMFiber', () => {
410
425
411
426
ReactDOM . render (
412
427
< div >
413
- { ReactDOM . unstable_createPortal ( [ 'Bye' , 'Hi' ] , portalContainer ) }
428
+ { ReactDOM . createPortal ( [ 'Bye' , 'Hi' ] , portalContainer ) }
414
429
</ div > ,
415
430
container ,
416
431
) ;
@@ -419,7 +434,7 @@ describe('ReactDOMFiber', () => {
419
434
420
435
ReactDOM . render (
421
436
< div >
422
- { ReactDOM . unstable_createPortal ( null , portalContainer ) }
437
+ { ReactDOM . createPortal ( null , portalContainer ) }
423
438
</ div > ,
424
439
container ,
425
440
) ;
@@ -700,7 +715,7 @@ describe('ReactDOMFiber', () => {
700
715
}
701
716
702
717
render ( ) {
703
- return ReactDOM . unstable_createPortal ( < Component /> , portalContainer ) ;
718
+ return ReactDOM . createPortal ( < Component /> , portalContainer ) ;
704
719
}
705
720
}
706
721
@@ -741,7 +756,7 @@ describe('ReactDOMFiber', () => {
741
756
}
742
757
743
758
render ( ) {
744
- return ReactDOM . unstable_createPortal ( < Component /> , portalContainer ) ;
759
+ return ReactDOM . createPortal ( < Component /> , portalContainer ) ;
745
760
}
746
761
}
747
762
@@ -781,7 +796,7 @@ describe('ReactDOMFiber', () => {
781
796
}
782
797
783
798
render ( ) {
784
- return ReactDOM . unstable_createPortal ( < Component /> , portalContainer ) ;
799
+ return ReactDOM . createPortal ( < Component /> , portalContainer ) ;
785
800
}
786
801
}
787
802
@@ -821,7 +836,7 @@ describe('ReactDOMFiber', () => {
821
836
822
837
ReactDOM . render (
823
838
< div onClick = { ( ) => ops . push ( 'parent clicked' ) } >
824
- { ReactDOM . unstable_createPortal (
839
+ { ReactDOM . createPortal (
825
840
< div
826
841
onClick = { ( ) => ops . push ( 'portal clicked' ) }
827
842
ref = { n => ( portal = n ) } >
@@ -874,7 +889,7 @@ describe('ReactDOMFiber', () => {
874
889
onMouseEnter = { ( ) => ops . push ( 'enter parent' ) }
875
890
onMouseLeave = { ( ) => ops . push ( 'leave parent' ) } >
876
891
< div ref = { n => ( firstTarget = n ) } />
877
- { ReactDOM . unstable_createPortal (
892
+ { ReactDOM . createPortal (
878
893
< div
879
894
onMouseEnter = { ( ) => ops . push ( 'enter portal' ) }
880
895
onMouseLeave = { ( ) => ops . push ( 'leave portal' ) }
@@ -909,6 +924,15 @@ describe('ReactDOMFiber', () => {
909
924
] ) ;
910
925
} ) ;
911
926
927
+ it ( 'should throw on bad createPortal argument' , ( ) => {
928
+ expect ( ( ) => {
929
+ ReactDOM . createPortal ( < div > portal</ div > , null ) ;
930
+ } ) . toThrow ( 'Target container is not a DOM element.' ) ;
931
+ expect ( ( ) => {
932
+ ReactDOM . createPortal ( < div > portal</ div > , document . createTextNode ( 'hi' ) ) ;
933
+ } ) . toThrow ( 'Target container is not a DOM element.' ) ;
934
+ } ) ;
935
+
912
936
it ( 'should warn for non-functional event listeners' , ( ) => {
913
937
spyOn ( console , 'error' ) ;
914
938
class Example extends React . Component {
0 commit comments