Next jsでスタイル化コンポーネントclassNameが一致しない場合
8759 ワード
import Document, {
DocumentContext,
DocumentInitialProps,
Html,
Main,
Head,
NextScript,
} from "next/document";
import { ServerStyleSheet } from "styled-components";
export default class MyDocument extends Document {
static async getInitialProps(
ctx: DocumentContext
): Promise<DocumentInitialProps> {
const sheet = new ServerStyleSheet();
const originalRenderPage = ctx.renderPage;
try {
ctx.renderPage = () =>
originalRenderPage({
enhanceApp: (App) => (props) =>
sheet.collectStyles(<App {...props} />),
});
const initialProps = await Document.getInitialProps(ctx);
return {
...initialProps,
styles: (
<>
{initialProps.styles}
{sheet.getStyleElement()}
</>
),
};
} finally {
sheet.seal();
}
}
render(): JSX.Element {
return (
<Html lang="ko">
<Head />
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
{
"presets": [
"next/babel"
],
"plugins": [
[
"babel-plugin-styled-components",
{
"fileName": true,
"displayName": true,
"pure": true
}
]
]
}
filename:コードを含むファイル名を通知するdisplayName:クラス名にスタイル情報を追加する
pure:未使用の属性を削除する
Reference
この問題について(Next jsでスタイル化コンポーネントclassNameが一致しない場合), 我々は、より多くの情報をここで見つけました https://velog.io/@vewevteen/Next-js에서-styled-component-className-매칭-안될-때テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol