gpt4 book ai didi

reactjs - Material UI 和 Next.js 设置

转载 作者:行者123 更新时间:2023-12-05 01:54:36 27 4
gpt4 key购买 nike

似乎设置 Next.js 和 MUI 的“方法”是删除服务器端样式,所以我在 _app.tsx 中做了它

import '../styles/globals.css';
import type { AppProps } from 'next/app';
import { useEffect } from 'react';

function MyApp({ Component, pageProps }: AppProps) {
useEffect(() => {
const jssStyles = document.querySelector('#jss-server-side');
if (jssStyles) {
jssStyles.parentElement?.removeChild(jssStyles);
}
}, []);
return <Component {...pageProps} />;
}

export default MyApp;

也在 _document.tsx 中做了

import { ServerStyleSheets } from '@mui/styles';
import Document, { Head, Html, Main, NextScript } from 'next/document';
import React from 'react';

export default class MyDocument extends Document {
render(): JSX.Element {
return (
<Html lang='en'>
<Head></Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}

MyDocument.getInitialProps = async (ctx) => {
const sheets = new ServerStyleSheets();
const originalRenderPage = ctx.renderPage;
ctx.renderPage = () => {
return originalRenderPage({
enhanceApp: (App) => (props) => sheets.collect(<App {...props} />),
});
};
const initialProps = await Document.getInitialProps(ctx);
return {
...initialProps,
styles: [
...React.Children.toArray(initialProps.styles),
sheets.getStyleElement(),
],
};
};

但是还是不行,用 makeStyles 改变 Material UI 没有生效。 jssStyles 变量也始终为 null,所以这可能是问题所在,但我找不到解决方案。

最佳答案

解决此问题的最佳方法是从 mui github 克隆示例存储库然后从那里开始。如果没有,那么只需查看它们的 _app.tsx_document.tsx 并确保安装了所有依赖项。请注意,他们还使用了 @emotion 包。

Javascript repo 链接 here和 typescript repo here

关于reactjs - Material UI 和 Next.js 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70593650/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com