라벨이 _document인 게시물 표시

Next.js에 styled-components 적용하기

이미지
Next.js에서 styled-components를 작성해도 ssr시 제대로 적용되지 않는 문제가 발생하였다. 이를 해결하기위해서 몇가지 설정이 필요하다. 1. babel 설정 Next.js는 첫 방문한 최초 페이지를 ssr방식으로 렌더링하고 이후에 페이지 내부에서 라우팅을 통해 다른 페이지로 이동하게되면 csr방식을 이용하게 된다. 이때 서버에서 생성하는 해시값과 브라우저에서 생성하는 해시값이 서로 달라서 문제가 발생하게 된다. 이를 해결하기위해서 바벨 플러그인 패키지를 설치한다. $ npm i -D babel-plugin-styled-components 바벨 플러그인을 설치한 뒤 root 디렉토리에  .babelrc 파일을 생성하고 아래 코드를 작성한다. { " presets " : [ " next/babel " ], " plugins " : [ [ " babel-plugin-styled-components " , { " ssr " : true, } ] ] } 공식문서 참고 https://github.com/vercel/next.js/blob/master/examples/with-styled-components/.babelrc 2. _document.js 설정 pages 폴더안에 _document.js 파일을 생성한다.  ssr시에 실행되는 파일인 _documents.js에 styled-compoents의 스타일 코드를 추출하는 로직을 작성한다. 공식문서 참고 https://github.com/vercel/next.js/tree/master/examples/with-styled-components import React from ' react '; import Document , { Html , Head , Main , NextScript } from '