@@ -48,9 +48,9 @@ ruleTester.run('no-deprecated', rule, {
48
48
// Not deprecated
49
49
'var element = React.createElement(\'p\', {}, null);' ,
50
50
'var clone = React.cloneElement(element);' ,
51
- 'ReactDOM.render(element, container);' ,
52
- 'ReactDOM.unmountComponentAtNode(container);' ,
51
+ 'ReactDOM.cloneElement(child, container);' ,
53
52
'ReactDOM.findDOMNode(instance);' ,
53
+ 'ReactDOM.createPortal(child, container);' ,
54
54
'ReactDOMServer.renderToString(element);' ,
55
55
'ReactDOMServer.renderToStaticMarkup(element);' ,
56
56
{
@@ -119,6 +119,40 @@ ruleTester.run('no-deprecated', rule, {
119
119
let { default: defaultReactExport, ...allReactExports } = React;
120
120
` ,
121
121
} ,
122
+ // React < 18
123
+ {
124
+ code : `
125
+ import { render, hydrate } from 'react-dom';
126
+ import { renderToNodeStream } from 'react-dom/server';
127
+ ReactDOM.render(element, container);
128
+ ReactDOM.unmountComponentAtNode(container);
129
+ ReactDOMServer.renderToNodeStream(element);
130
+ ` ,
131
+ settings : { react : { version : '17.999.999' } } ,
132
+ } ,
133
+ // React 18 API
134
+ {
135
+ code : `
136
+ import ReactDOM, { createRoot } from 'react-dom/client';
137
+ ReactDOM.createRoot(container);
138
+ const root = createRoot(container);
139
+ root.unmount();
140
+ ` ,
141
+ } ,
142
+ {
143
+ code : `
144
+ import ReactDOM, { hydrateRoot } from 'react-dom/client';
145
+ ReactDOM.hydrateRoot(container, <App/>);
146
+ hydrateRoot(container, <App/>);
147
+ ` ,
148
+ } ,
149
+ {
150
+ code : `
151
+ import ReactDOMServer, { renderToPipeableStream } from 'react-dom/server';
152
+ ReactDOMServer.renderToPipeableStream(<App />, {});
153
+ renderToPipeableStream(<App />, {});
154
+ ` ,
155
+ } ,
122
156
] ) ,
123
157
124
158
invalid : parsers . all ( [
@@ -454,5 +488,93 @@ ruleTester.run('no-deprecated', rule, {
454
488
) ,
455
489
] ,
456
490
} ,
491
+ {
492
+ code : `
493
+ import { render } from 'react-dom';
494
+ ReactDOM.render(<div></div>, container);
495
+ ` ,
496
+ errors : [
497
+ errorMessage (
498
+ 'ReactDOM.render' ,
499
+ '18.0.0' ,
500
+ 'createRoot' ,
501
+ 'https://reactjs.org/link/switch-to-createroot' ,
502
+ { type : 'ImportDeclaration' , line : 2 , column : 9 }
503
+ ) ,
504
+ errorMessage (
505
+ 'ReactDOM.render' ,
506
+ '18.0.0' ,
507
+ 'createRoot' ,
508
+ 'https://reactjs.org/link/switch-to-createroot' ,
509
+ { type : 'MemberExpression' , line : 3 , column : 9 }
510
+ ) ,
511
+ ] ,
512
+ } ,
513
+ {
514
+ code : `
515
+ import { hydrate } from 'react-dom';
516
+ ReactDOM.hydrate(<div></div>, container);
517
+ ` ,
518
+ errors : [
519
+ errorMessage (
520
+ 'ReactDOM.hydrate' ,
521
+ '18.0.0' ,
522
+ 'hydrateRoot' ,
523
+ 'https://reactjs.org/link/switch-to-createroot' ,
524
+ { type : 'ImportDeclaration' , line : 2 , column : 9 }
525
+ ) ,
526
+ errorMessage (
527
+ 'ReactDOM.hydrate' ,
528
+ '18.0.0' ,
529
+ 'hydrateRoot' ,
530
+ 'https://reactjs.org/link/switch-to-createroot' ,
531
+ { type : 'MemberExpression' , line : 3 , column : 9 }
532
+ ) ,
533
+ ] ,
534
+ } ,
535
+ {
536
+ code : `
537
+ import { unmountComponentAtNode } from 'react-dom';
538
+ ReactDOM.unmountComponentAtNode(container);
539
+ ` ,
540
+ errors : [
541
+ errorMessage (
542
+ 'ReactDOM.unmountComponentAtNode' ,
543
+ '18.0.0' ,
544
+ 'root.unmount' ,
545
+ 'https://reactjs.org/link/switch-to-createroot' ,
546
+ { type : 'ImportDeclaration' , line : 2 , column : 9 }
547
+ ) ,
548
+ errorMessage (
549
+ 'ReactDOM.unmountComponentAtNode' ,
550
+ '18.0.0' ,
551
+ 'root.unmount' ,
552
+ 'https://reactjs.org/link/switch-to-createroot' ,
553
+ { type : 'MemberExpression' , line : 3 , column : 9 }
554
+ ) ,
555
+ ] ,
556
+ } ,
557
+ {
558
+ code : `
559
+ import { renderToNodeStream } from 'react-dom/server';
560
+ ReactDOMServer.renderToNodeStream(element);
561
+ ` ,
562
+ errors : [
563
+ errorMessage (
564
+ 'ReactDOMServer.renderToNodeStream' ,
565
+ '18.0.0' ,
566
+ 'renderToPipeableStream' ,
567
+ 'https://reactjs.org/docs/react-dom-server.html#rendertonodestream' ,
568
+ { type : 'ImportDeclaration' , line : 2 , column : 9 }
569
+ ) ,
570
+ errorMessage (
571
+ 'ReactDOMServer.renderToNodeStream' ,
572
+ '18.0.0' ,
573
+ 'renderToPipeableStream' ,
574
+ 'https://reactjs.org/docs/react-dom-server.html#rendertonodestream' ,
575
+ { type : 'MemberExpression' , line : 3 , column : 9 }
576
+ ) ,
577
+ ] ,
578
+ } ,
457
579
] ) ,
458
580
} ) ;
0 commit comments