-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bump eslint-plugin-react to ^7.33.2 #38117
Changes from 3 commits
a20ed57
fac689e
d154127
bb91b2f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,14 @@ | ||
import * as React from 'react'; | ||
import * as ReactDOM from 'react-dom'; | ||
import * as ReactDOMClient from 'react-dom/client'; | ||
import CssBaseline from '@mui/material/CssBaseline'; | ||
import App from './App'; | ||
|
||
ReactDOM.render( | ||
const root = ReactDOMClient.createRoot(document.getElementById('root')!); | ||
|
||
root.render( | ||
<React.Fragment> | ||
{/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */} | ||
<CssBaseline /> | ||
<App /> | ||
</React.Fragment>, | ||
document.getElementById('root'), | ||
); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,11 @@ | ||
import * as React from 'react'; | ||
import * as ReactDOM from 'react-dom'; | ||
import * as ReactDOMClient from 'react-dom/client'; | ||
import App from './App'; | ||
|
||
ReactDOM.render( | ||
const root = ReactDOMClient.createRoot(document.getElementById('root')); | ||
|
||
root.render( | ||
<React.StrictMode> | ||
<App /> | ||
</React.StrictMode>, | ||
document.getElementById('root'), | ||
); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
import * as React from 'react'; | ||
import PropTypes from 'prop-types'; | ||
import * as ReactDOM from 'react-dom'; | ||
import * as ReactDOMClient from 'react-dom/client'; | ||
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom'; | ||
import webfontloader from 'webfontloader'; | ||
import TestViewer from './TestViewer'; | ||
|
@@ -225,21 +225,31 @@ if (unusedBlacklistPatterns.size > 0) { | |
const viewerRoot = document.getElementById('test-viewer'); | ||
|
||
function FixtureRenderer({ component: FixtureComponent }) { | ||
const viewerReactRoot = React.useRef(null); | ||
|
||
React.useLayoutEffect(() => { | ||
const children = ( | ||
<TestViewer> | ||
<FixtureComponent /> | ||
</TestViewer> | ||
); | ||
const renderTimeout = setTimeout(() => { | ||
const children = ( | ||
<TestViewer> | ||
<FixtureComponent /> | ||
</TestViewer> | ||
); | ||
|
||
ReactDOM.render(children, viewerRoot); | ||
}, [FixtureComponent]); | ||
if (viewerReactRoot.current === null) { | ||
viewerReactRoot.current = ReactDOMClient.createRoot(viewerRoot); | ||
} | ||
|
||
viewerReactRoot.current.render(children); | ||
}); | ||
|
||
React.useLayoutEffect(() => { | ||
return () => { | ||
ReactDOM.unmountComponentAtNode(viewerRoot); | ||
clearTimeout(renderTimeout); | ||
setTimeout(() => { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. React tree can't be synchronously unmounted during render, so I introduced setTimeout to run this code after React lifecycle completes. Taken from https://stackoverflow.com/questions/73459382/react-18-async-way-to-unmount-root#answer-74445760 |
||
viewerReactRoot.current.unmount(); | ||
viewerReactRoot.current = null; | ||
}); | ||
}; | ||
}, []); | ||
}, [FixtureComponent]); | ||
|
||
return null; | ||
} | ||
|
@@ -354,9 +364,5 @@ App.propTypes = { | |
|
||
const container = document.getElementById('react-root'); | ||
const children = <App fixtures={regressionFixtures.concat(demoFixtures)} />; | ||
if (typeof ReactDOM.unstable_createRoot === 'function') { | ||
const root = ReactDOM.unstable_createRoot(container); | ||
root.render(children); | ||
} else { | ||
ReactDOM.render(children, container); | ||
} | ||
const reactRoot = ReactDOMClient.createRoot(container); | ||
reactRoot.render(children); |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -85,6 +85,7 @@ export default function createMount(options: CreateMountOptions = {}) { | |
|
||
afterEach(() => { | ||
ReactDOMTestUtils.act(() => { | ||
// eslint-disable-next-line react/no-deprecated | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I couldn't make it work. This could be caused by the lack of Enzyme support for React 18. |
||
ReactDOM.unmountComponentAtNode(container!); | ||
}); | ||
container!.parentElement!.removeChild(container!); | ||
|
@@ -103,6 +104,7 @@ export default function createMount(options: CreateMountOptions = {}) { | |
); | ||
} | ||
ReactDOMTestUtils.act(() => { | ||
// eslint-disable-next-line react/no-deprecated | ||
ReactDOM.unmountComponentAtNode(container!); | ||
}); | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Purely out of curiosity, did you try it with testing-library/react-testing-library#1216 (comment)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it works with that version.