Skip to content

Commit

Permalink
support react 18
Browse files Browse the repository at this point in the history
  • Loading branch information
huozhi committed Jun 28, 2021
1 parent 9704163 commit 45f431e
Show file tree
Hide file tree
Showing 9 changed files with 23 additions and 58 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,9 @@
"pretty-bytes": "5.3.0",
"pretty-ms": "7.0.0",
"react": "17.0.2",
"react-18": "npm:react@18",
"react-18": "npm:react@18.0.0",
"react-dom": "17.0.2",
"react-dom-18": "npm:react-dom@18",
"react-dom-18": "npm:react-dom@18.0.0",
"react-ssr-prepass": "1.0.8",
"release": "6.3.0",
"request-promise-core": "1.1.2",
Expand Down
2 changes: 1 addition & 1 deletion packages/next/client/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -516,8 +516,8 @@ function renderReactElement(
reactRoot = ReactDOM18.createRoot(domEl, { hydrate: shouldHydrate })
reactRoot.render(reactEl)
}
shouldHydrate = false
}
shouldHydrate = false
} else {
// The check for `.hydrate` is there to support React alternatives like preact
if (shouldHydrate) {
Expand Down
14 changes: 14 additions & 0 deletions test/integration/react-18/prerelease/next.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module.exports = {
webpack(config) {
const { alias } = config.resolve
// FIXME: resolving react/jsx-runtime https://github.com/facebook/react/issues/20235
alias['react/jsx-dev-runtime'] = require.resolve('react/jsx-dev-runtime.js')
alias['react/jsx-runtime'] = require.resolve('react/jsx-runtime.js')

// Use react 18
alias['react'] = require.resolve('react-18')
alias['react-dom'] = require.resolve('react-dom-18')

return config
},
}

This file was deleted.

1 change: 1 addition & 0 deletions test/integration/react-18/prerelease/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"dependencies": {
"react": "*",
"react-dom": "*"
}
}
3 changes: 3 additions & 0 deletions test/integration/react-18/prerelease/pages/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
export default function Index() {
if (typeof window !== 'undefined') {
window.didHydrate = true
}
return <p>Hello</p>
}
5 changes: 0 additions & 5 deletions test/integration/react-18/supported/next.config.js

This file was deleted.

4 changes: 0 additions & 4 deletions test/integration/react-18/supported/pages/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
export default function Index() {
if (typeof window !== 'undefined') {
window.didHydrate = true
}
return 'details'
return <p>Hello</p>
}
10 changes: 2 additions & 8 deletions test/integration/react-18/test/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,19 +82,13 @@ describe('React 18 Support', () => {
let app
let appPort
beforeAll(async () => {
jest.mock('react', () => {
return jest.requireActual('react-18')
})
jest.mock('react-dom', () => {
return jest.requireActual('react-dom-18')
})
await fs.remove(join(appDir, '.next'))
const { stderr } = await nextBuild(appDir, [dirPrerelease], {
stderr: true,
})
console.error(stderr)
// stderr && console.error(stderr)
appPort = await findPort()
app = await nextStart(appDir, appPort, { stderr: true })
app = await nextStart(appDir, appPort)
})
afterAll(async () => await killApp(app))
it('hydrates correctly for normal page', async () => {
Expand Down

0 comments on commit 45f431e

Please sign in to comment.