Skip to content

Commit 82a63c6

Browse files
committed
Do not use legacy React functions
1 parent b44e74b commit 82a63c6

File tree

11 files changed

+40
-27
lines changed

11 files changed

+40
-27
lines changed

benchmark/browser/index.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import * as React from 'react';
2-
import * as ReactDOM from 'react-dom';
2+
import * as ReactDOMClient from 'react-dom/client';
33
import PropTypes from 'prop-types';
44
import { logReactMetrics } from './utils';
55

66
// Get all the scenarios
77
const requirePerfScenarios = require.context('./scenarios', true, /(js|ts|tsx)$/);
88

99
const rootEl = document.getElementById('root');
10+
const root = ReactDOMClient.createRoot(rootEl);
1011

1112
const scenarioSuitePath = window.location.search.replace('?', '');
1213

@@ -35,11 +36,10 @@ Measure.propTypes = {
3536
children: PropTypes.node,
3637
};
3738

38-
ReactDOM.render(
39+
root.render(
3940
<React.Profiler id={scenarioSuitePath} onRender={logReactMetrics}>
4041
<Measure>
4142
<Component />
4243
</Measure>
4344
</React.Profiler>,
44-
rootEl,
4545
);
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import * as React from 'react';
2-
import * as ReactDOM from 'react-dom';
2+
import * as ReactDOMClient from 'react-dom/client';
33
import CssBaseline from '@mui/material/CssBaseline';
44
import App from './App';
55

6-
ReactDOM.render(
6+
const root = ReactDOMClient.createRoot(document.getElementById('root')!);
7+
8+
root.render(
79
<React.Fragment>
810
{/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}
911
<CssBaseline />
1012
<App />
1113
</React.Fragment>,
12-
document.getElementById('root'),
1314
);

examples/material-ui-cra-styled-components/src/index.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
import * as React from 'react';
2-
import * as ReactDOM from 'react-dom';
2+
import * as ReactDOMClient from 'react-dom/client';
33
import CssBaseline from '@mui/material/CssBaseline';
44
import App from './App';
55
import * as serviceWorker from './serviceWorker';
66

7-
ReactDOM.render(
7+
const root = ReactDOMClient.createRoot(document.getElementById('root'));
8+
9+
root.render(
810
<React.Fragment>
911
{/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}
1012
<CssBaseline />
1113
<App />
1214
</React.Fragment>,
13-
document.getElementById('root'),
1415
);
1516

1617
// If you want your app to work offline and load faster, you can change

examples/material-ui-express-ssr/client.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ function Main() {
2121
);
2222
}
2323

24-
ReactDOM.hydrate(<Main />, document.querySelector('#root'));
24+
ReactDOM.hydrateRoot(document.querySelector('#root'), <Main />);
+4-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import * as React from 'react';
2-
import * as ReactDOM from 'react-dom';
2+
import * as ReactDOMClient from 'react-dom/client';
33
import App from './App';
44

5-
ReactDOM.render(
5+
const root = ReactDOMClient.createRoot(document.getElementById('root'));
6+
7+
root.render(
68
<React.StrictMode>
79
<App />
810
</React.StrictMode>,
9-
document.getElementById('root'),
1011
);

packages/mui-utils/src/elementAcceptingRef.test.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ describe('elementAcceptingRef', () => {
2626
function testAct() {
2727
checkPropType(element);
2828
if (shouldMount) {
29+
// TODO: replace with React 18 implementation after https://github.com/testing-library/react-testing-library/issues/1216 is closed.
30+
// eslint-disable-next-line react/no-deprecated
2931
ReactDOM.render(
3032
<React.Suspense fallback={<p />}>
3133
{React.cloneElement(element, { ref: React.createRef() })}
@@ -43,6 +45,7 @@ describe('elementAcceptingRef', () => {
4345
});
4446

4547
afterEach(() => {
48+
// eslint-disable-next-line react/no-deprecated
4649
ReactDOM.unmountComponentAtNode(rootNode);
4750
});
4851

packages/mui-utils/src/elementTypeAcceptingRef.test.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ describe('elementTypeAcceptingRef', () => {
2626
function testAct() {
2727
checkPropType(Component);
2828
if (shouldMount) {
29+
// TODO: replace with React 18 implementation after https://github.com/testing-library/react-testing-library/issues/1216 is closed.
30+
// eslint-disable-next-line react/no-deprecated
2931
ReactDOM.render(
3032
<React.Suspense fallback={<p />}>
3133
<Component ref={React.createRef()} />
@@ -47,6 +49,7 @@ describe('elementTypeAcceptingRef', () => {
4749
});
4850

4951
afterEach(() => {
52+
// eslint-disable-next-line react/no-deprecated
5053
ReactDOM.unmountComponentAtNode(rootNode);
5154
});
5255

packages/mui-utils/src/useIsFocusVisible.test.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { expect } from 'chai';
22
import * as React from 'react';
3-
import * as ReactDOM from 'react-dom';
3+
import * as ReactDOMClient from 'react-dom/client';
44
import {
55
act,
66
createRenderer,
@@ -67,15 +67,20 @@ describe('useIsFocusVisible', () => {
6767
});
6868

6969
let rootElement;
70+
let reactRoot;
7071

7172
beforeEach(() => {
7273
rootElement = document.createElement('div');
7374
document.body.appendChild(rootElement);
7475
rootElement.attachShadow({ mode: 'open' });
76+
reactRoot = ReactDOMClient.createRoot(rootElement.shadowRoot);
7577
});
7678

7779
afterEach(() => {
78-
ReactDOM.unmountComponentAtNode(rootElement.shadowRoot);
80+
act(() => {
81+
reactRoot.unmount();
82+
});
83+
7984
teardownFocusVisible(rootElement.shadowRoot);
8085
document.body.removeChild(rootElement);
8186
});

test/regressions/index.js

+6-10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as React from 'react';
22
import PropTypes from 'prop-types';
3-
import * as ReactDOM from 'react-dom';
3+
import * as ReactDOMClient from 'react-dom/client';
44
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';
55
import webfontloader from 'webfontloader';
66
import TestViewer from './TestViewer';
@@ -220,7 +220,7 @@ if (unusedBlacklistPatterns.size > 0) {
220220
);
221221
}
222222

223-
const viewerRoot = document.getElementById('test-viewer');
223+
const viewerRoot = ReactDOMClient.createRoot(document.getElementById('test-viewer'));
224224

225225
function FixtureRenderer({ component: FixtureComponent }) {
226226
React.useLayoutEffect(() => {
@@ -230,12 +230,12 @@ function FixtureRenderer({ component: FixtureComponent }) {
230230
</TestViewer>
231231
);
232232

233-
ReactDOM.render(children, viewerRoot);
233+
viewerRoot.render(children);
234234
}, [FixtureComponent]);
235235

236236
React.useLayoutEffect(() => {
237237
return () => {
238-
ReactDOM.unmountComponentAtNode(viewerRoot);
238+
viewerRoot.unmount();
239239
};
240240
}, []);
241241

@@ -352,9 +352,5 @@ App.propTypes = {
352352

353353
const container = document.getElementById('react-root');
354354
const children = <App fixtures={regressionFixtures.concat(demoFixtures)} />;
355-
if (typeof ReactDOM.unstable_createRoot === 'function') {
356-
const root = ReactDOM.unstable_createRoot(container);
357-
root.render(children);
358-
} else {
359-
ReactDOM.render(children, container);
360-
}
355+
const reactRoot = ReactDOMClient.createRoot(container);
356+
reactRoot.render(children);

test/utils/createMount.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ export default function createMount(options: CreateMountOptions = {}) {
8585

8686
afterEach(() => {
8787
ReactDOMTestUtils.act(() => {
88+
// eslint-disable-next-line react/no-deprecated
8889
ReactDOM.unmountComponentAtNode(container!);
8990
});
9091
container!.parentElement!.removeChild(container!);
@@ -103,6 +104,7 @@ export default function createMount(options: CreateMountOptions = {}) {
103104
);
104105
}
105106
ReactDOMTestUtils.act(() => {
107+
// eslint-disable-next-line react/no-deprecated
106108
ReactDOM.unmountComponentAtNode(container!);
107109
});
108110

test/utils/createRenderer.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -722,8 +722,9 @@ export function fireTouchChangedEvent(
722722
fireEvent(target, event);
723723
target.getBoundingClientRect = originalGetBoundingClientRect;
724724
}
725-
726-
export function act(callback: () => void) {
725+
export function act(callback: () => void): void;
726+
export function act<T>(callback: () => T | Promise<T>): Promise<T>;
727+
export function act<T>(callback: () => void | T | Promise<T>) {
727728
return traceSync('act', () => rtlAct(callback));
728729
}
729730

0 commit comments

Comments
 (0)