Skip to content

Commit f4d8cd9

Browse files
committed
upgrade to react 18
1 parent 84da08e commit f4d8cd9

File tree

6 files changed

+41
-39
lines changed

6 files changed

+41
-39
lines changed

package-lock.json

Lines changed: 26 additions & 28 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
],
3131
"repository": "https://github.com/Cansn0w/react-typescript-webpack-prerender-template",
3232
"devDependencies": {
33-
"@types/react": "^17.0.38",
34-
"@types/react-dom": "^17.0.11",
33+
"@types/react": "^18.0.15",
34+
"@types/react-dom": "^18.0.6",
3535
"clean-webpack-plugin": "^4.0.0",
3636
"css-loader": "^6.5.1",
3737
"css-minimizer-webpack-plugin": "^3.4.1",
@@ -57,7 +57,7 @@
5757
"yargs": "^17.3.1"
5858
},
5959
"dependencies": {
60-
"react": "^17.0.2",
61-
"react-dom": "^17.0.2"
60+
"react": "^18.2.0",
61+
"react-dom": "^18.2.0"
6262
}
6363
}

src/app/create.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,9 @@ import * as React from "react";
44
* Important: ensure this function has no side effect for server side rendering.
55
*/
66
export function createApp({ content }: { content: string }) {
7-
return <h1>{content}</h1>;
7+
return (
8+
<React.StrictMode>
9+
<h1>{content}</h1>
10+
</React.StrictMode>
11+
);
812
}

src/hydrate.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import * as ReactDom from "react-dom";
1+
import { hydrateRoot } from "react-dom/client";
22
import { createApp } from "app/create";
33
import "./styles.css";
44

55
window.addEventListener("DOMContentLoaded", () => {
66
const bootstrap = (window as any)["bootstrap"] as { content: string };
7-
ReactDom.hydrate(createApp(bootstrap), document.getElementById("root"));
7+
hydrateRoot(document.getElementById("root")!, createApp(bootstrap));
88
});

src/main.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { createApp } from "app/create";
22
import * as React from "react";
3-
import * as ReactDom from "react-dom";
3+
import { createRoot } from "react-dom/client";
44
import "./styles.css";
55

66
class AppLoader extends React.Component<
@@ -31,4 +31,4 @@ class AppLoader extends React.Component<
3131
}
3232
}
3333

34-
ReactDom.render(<AppLoader />, document.getElementById("root"));
34+
createRoot(document.getElementById("root")!).render(<AppLoader />);

src/prerender.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { hideBin } from "yargs/helpers";
1515
async function parseArgs() {
1616
const args = await yargs(hideBin(process.argv))
1717
.scriptName("prerender")
18-
.usage('$0', 'prerender the webapp into static files')
18+
.usage("$0", "prerender the webapp into static files")
1919
.option("api-dir", {
2020
alias: "api",
2121
demandOption: true,
@@ -98,7 +98,7 @@ async function prerender({ api }: { api: string }) {
9898
}
9999

100100
console.log(`Rendering 404 page`);
101-
const bootstrap = { content: 'not found 🔍' };
101+
const bootstrap = { content: "not found 🔍" };
102102
write("/", render(bootstrap), "404.html");
103103

104104
const timeTaken = new Date().getTime() - startTime;

0 commit comments

Comments
 (0)