Warning: Prop `className` did not match. Server: "sc-gKclnd ctBXSH" Client: "sc-dkPtRN hSjZFd"
Next.js로 Styled-components 사용하면, 최초 빌드하여 랜더링은 문제 없이 잘 되는데, 몇번 새로고침을 하면 위와같은 에러가 발생할 때가 있다.
Next는 처음 페이지는 SSR(서버사이드 랜더링)으로 작동하고 이후는 CSR(클라이언트 사이드 렌더링)으로 작용하기 때문에, 서버에서 받은 해시 클래스명과 이후 클라이언트에서 작동하는 해시클래스명이 달라져서 스타일을 적용하지 못하는 현상이다.
[최초 랜더링] : 정상 작동
[n번 새로고침 시] : Warning과 함께 스타일 적용 안됨
해결방안
바벨 플러그인을 설치하고 바벨 설정을 해주면 해결 할 수 있다.
이 플러그인은 서버와 클라이언트의 클래스명을 일치 시켜주는 역할을 한다.
1. 바벨 플러그인 설치
npm i babel-plugin-styled-components
2. 프로젝트 루트 파일에 .bablerc 파일 신규 생성
3. .babelrc 파일 설정
{
"presets": ["next/babel"],
"plugins": [
[
"babel-plugin-styled-components",
{ "fileName": true, "displayName": true, "pure": true }
]
]
}
* 인덱스 옵션 설명
{ "fileName": true, "displayName": true, "pure": true }
- fileName: 코드가 포함된 파일명을 알려줌
- displayName : 클래스명에 해당 스타일 정보 추가
- pure : 사용하지 않은 속성 제거
'programming' 카테고리의 다른 글
[Python] 파이썬 DataFrame(데이터프레임) 인덱싱, 슬라이싱 (0) | 2022.01.04 |
---|---|
[Git] 원격 브랜치 로컬pc로 가져와서 작업하기 ( + 에러 해결 fatal: Ambiguous object name: 'origin/tom_20211220_refreshTokenApply') (0) | 2022.01.02 |
[React] 사파리 '홈 화면에 추가' 시 앱 이름 변경하기 (0) | 2021.12.21 |
[Python] 파이썬 파일 다루기 / 파일 저장하기 / 파일 읽기 (0) | 2021.12.13 |
[Python] 파이썬 pandas(판다스)를 활용하여 DataFrame(데이터프레임) 만들기 (0) | 2021.12.13 |