프론트엔드 개발
Next js + Styled-Components 셋팅 본문
Next js에서 styled-component를 이용하려면 몇 가지 설정이 필요하다.
Next js와 styled-components 가 설치되어 있다고 가정한다.
문제점
첫 화면에서, css가 의도치 않게 적용되는 모습을 볼 수 있다.
styled-components이 기존 csr처럼 작동되기 때문에 발생되는 문제인데, 이를 해결하려면 ssr을 적용을 해야 한다.
해결방법
1. babel-plugin-styled-components 설치
yarn add -D babel-plugin-styled-components
npm i -D babel-plugin-styled-components
2. 해당 프로젝트 root 바로 밑에 .babelrc를 만든다.
{
"presets": ["next/babel"],
"plugins": [
[
"styled-components",
{
"ssr": true
}
]
]
}
3. pages 폴더 바로 밑에 _document.js 만든다.
import Document, { HTML, Head, Main, NextScript } from "next/document";
import { ServerStyleSheet } from "styled-components";
export default class MyDocument extends Document {
static getInitialProps({ renderPage }) {
// Step 1: Create an instance of ServerStyleSheet
const sheet = new ServerStyleSheet();
// Step 2: Retrieve styles from components in the page
const page = renderPage(App => props =>
sheet.collectStyles(<App {...props} />)
);
// Step 3: Extract the styles as <style> tags
const styleTags = sheet.getStyleElement();
// Step 4: Pass styleTags as a prop
return { ...page, styleTags };
}
render() {
return (
<HTML>
<Head>
{/* Step 5: Output the styles in the head */}
{this.props.styleTags}
</Head>
<body>
<Main />
<NextScript />
</body>
</HTML>
);
}
}
출처:
https://github.com/vercel/next.js/blob/master/examples/with-styled-components/.babelrc
'Front-End > NextJs' 카테고리의 다른 글
Next Js + Typescript (0) | 2021.08.01 |
---|---|
Nest js 11 릴리즈 내용 보기 (1) | 2021.07.10 |
Next js 환경변수 (2) | 2021.02.13 |
Pre-rendering (0) | 2021.02.06 |
routing (0) | 2021.02.06 |
Comments