Skip to content

Commit de89b9f

Browse files
fix style duplicate
1 parent 2b5ceca commit de89b9f

File tree

5 files changed

+325
-283
lines changed

5 files changed

+325
-283
lines changed

package.json

+15-15
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-ssr",
3-
"version": "3.0.0",
3+
"version": "3.0.1",
44
"author": "mrwang",
55
"license": "MIT",
66
"scripts": {
@@ -27,7 +27,7 @@
2727
"dotenv": "^16.0.0",
2828
"express": "^4.18.1",
2929
"express-session": "^1.17.3",
30-
"framer-motion": "^6.3.11",
30+
"framer-motion": "^6.3.15",
3131
"immer": "^9.0.15",
3232
"js-cookie": "^3.0.1",
3333
"lodash": "^4.17.21",
@@ -63,42 +63,42 @@
6363
"@babel/preset-react": "^7.17.12",
6464
"@babel/preset-typescript": "^7.17.12",
6565
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
66-
"@swc/core": "^1.2.203",
66+
"@swc/core": "^1.2.205",
6767
"@types/compression": "^1.7.2",
6868
"@types/cookie-parser": "^1.4.3",
6969
"@types/cors": "^2.8.12",
7070
"@types/express": "^4.17.13",
7171
"@types/express-session": "^1.17.4",
72-
"@types/jest": "^28.1.1",
72+
"@types/jest": "^28.1.3",
7373
"@types/js-cookie": "^3.0.2",
7474
"@types/lodash": "^4.14.182",
7575
"@types/multer": "^1.4.7",
7676
"@types/node": "^18.0.0",
77-
"@types/react": "^18.0.12",
77+
"@types/react": "^18.0.14",
7878
"@types/react-dom": "^18.0.5",
7979
"@types/webpack": "^5.28.0",
8080
"@types/webpack-env": "^1.17.0",
8181
"@types/webpack-hot-middleware": "^2.25.6",
82-
"@typescript-eslint/eslint-plugin": "^5.28.0",
83-
"@typescript-eslint/parser": "^5.28.0",
82+
"@typescript-eslint/eslint-plugin": "^5.29.0",
83+
"@typescript-eslint/parser": "^5.29.0",
8484
"autoprefixer": "^10.4.7",
8585
"babel-jest": "^28.1.1",
8686
"babel-loader": "^8.2.5",
8787
"babel-plugin-import": "^1.13.5",
8888
"clean-webpack-plugin": "^4.0.0",
89-
"core-js": "^3.23.1",
89+
"core-js": "^3.23.3",
9090
"cross-env": "^7.0.3",
9191
"css-loader": "^6.7.1",
9292
"css-minimizer-webpack-plugin": "^4.0.0",
9393
"eslint": "^8.17.0",
9494
"eslint-config-prettier": "^8.5.0",
95-
"eslint-import-resolver-typescript": "^2.7.1",
95+
"eslint-import-resolver-typescript": "^3.1.0",
9696
"eslint-plugin-import": "^2.26.0",
97-
"eslint-plugin-jsx-a11y": "^6.5.1",
97+
"eslint-plugin-jsx-a11y": "^6.6.0",
9898
"eslint-plugin-prettier": "^4.0.0",
99-
"eslint-plugin-react": "^7.30.0",
99+
"eslint-plugin-react": "^7.30.1",
100100
"eslint-plugin-react-hooks": "^4.6.0",
101-
"eslint-webpack-plugin": "^3.1.1",
101+
"eslint-webpack-plugin": "^3.2.0",
102102
"file-loader": "^6.2.0",
103103
"fork-ts-checker-webpack-plugin": "^7.2.11",
104104
"identity-obj-proxy": "^3.0.0",
@@ -109,12 +109,12 @@
109109
"postcss-loader": "^7.0.0",
110110
"prettier": "^2.7.0",
111111
"react-refresh": "^0.14.0",
112-
"sass": "^1.52.3",
113-
"sass-loader": "^13.0.0",
112+
"sass": "^1.53.0",
113+
"sass-loader": "^13.0.1",
114114
"style-loader": "^3.3.1",
115115
"swc-loader": "^0.2.3",
116116
"thread-loader": "^3.0.4",
117-
"typescript": "^4.7.3",
117+
"typescript": "^4.7.4",
118118
"webpack-bundle-analyzer": "^4.5.0",
119119
"webpack-cli": "^4.10.0",
120120
"webpack-dev-middleware": "^5.3.3",

src/client/chakraEntry.tsx

+16-9
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,37 @@
11
import { ChakraProvider, createCookieStorageManager } from "@chakra-ui/react";
2+
import { CacheProvider } from "@emotion/react";
23
import { StrictMode } from "react";
34
import { HelmetProvider } from "react-helmet-async";
45
import { Provider } from "react-redux";
56
import { BrowserRouter as Router } from "react-router-dom";
67

78
import { App } from "components/App";
9+
import { createEmotionCache } from "config/emotionCache";
810
import { theme } from "theme";
911

1012
import type { createUniversalStore } from "store";
1113

14+
const emotionCache = createEmotionCache();
15+
1216
const Root = ({ store }: { store: ReturnType<typeof createUniversalStore> }) => {
1317
console.warn("you are using chakra UI component library!");
1418

19+
// this component will only run once when the page mount, so it's ok to use server's cookie
1520
const cookieStore = createCookieStorageManager("chakra-ui-color-mode", store.getState().server.cookie.data);
1621

1722
return (
1823
<StrictMode>
19-
<ChakraProvider resetCSS theme={theme} colorModeManager={cookieStore}>
20-
<Provider store={store}>
21-
<Router>
22-
<HelmetProvider>
23-
<App />
24-
</HelmetProvider>
25-
</Router>
26-
</Provider>
27-
</ChakraProvider>
24+
<CacheProvider value={emotionCache}>
25+
<ChakraProvider resetCSS theme={theme} colorModeManager={cookieStore}>
26+
<Provider store={store} serverState={store.getState()}>
27+
<Router>
28+
<HelmetProvider>
29+
<App />
30+
</HelmetProvider>
31+
</Router>
32+
</Provider>
33+
</ChakraProvider>
34+
</CacheProvider>
2835
</StrictMode>
2936
);
3037
};

src/config/emotionCache.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import createCache from "@emotion/cache";
2+
3+
export const createEmotionCache = () => createCache({ key: "css" });

src/server/middleware/renderPage/renderSSR/renderChakra.tsx

+15-9
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { ChakraProvider, createCookieStorageManager } from "@chakra-ui/react";
2+
import { CacheProvider } from "@emotion/react";
23
import { renderToPipeableStream } from "react-dom/server";
34
import { HelmetProvider } from "react-helmet-async";
45
import { Provider } from "react-redux";
56
import { StaticRouter as Router } from "react-router-dom/server";
67

78
import { App } from "components/App";
9+
import { createEmotionCache } from "config/emotionCache";
810
import { HTML } from "template/Html";
911
import { theme } from "theme";
1012
import {
@@ -26,6 +28,8 @@ import type { SafeAction } from "../compose";
2628
export const targetRender: SafeAction = async ({ req, res, store, lang, env, page }) => {
2729
const helmetContext = {};
2830

31+
const emotionCache = createEmotionCache();
32+
2933
const cookieStore = createCookieStorageManager("chakra-ui-color-mode", store.getState().server.cookie.data);
3034

3135
const stateFileContent = await getAllStateFileContent(manifestStateFile("client"));
@@ -55,15 +59,17 @@ export const targetRender: SafeAction = async ({ req, res, store, lang, env, pag
5559
preLoad={generatePreloadScriptElements(mainScripts.concat(runtimeScripts).concat(dynamicScriptsPath))}
5660
reduxInitialState={JSON.stringify(store.getState())}
5761
>
58-
<ChakraProvider resetCSS theme={theme} colorModeManager={cookieStore}>
59-
<Provider store={store}>
60-
<Router location={req.url}>
61-
<HelmetProvider context={helmetContext}>
62-
<App />
63-
</HelmetProvider>
64-
</Router>
65-
</Provider>
66-
</ChakraProvider>
62+
<CacheProvider value={emotionCache}>
63+
<ChakraProvider resetCSS theme={theme} colorModeManager={cookieStore}>
64+
<Provider store={store} serverState={store.getState()}>
65+
<Router location={req.url}>
66+
<HelmetProvider context={helmetContext}>
67+
<App />
68+
</HelmetProvider>
69+
</Router>
70+
</Provider>
71+
</ChakraProvider>
72+
</CacheProvider>
6773
</HTML>,
6874
{
6975
bootstrapScripts: [...runtimeScripts, ...mainScripts, ...dynamicScriptsPath],

0 commit comments

Comments
 (0)