문제 상황
export default function ExComponent() {
const items = window.localStorage.getItem('items');
return ...
}
Next.js에서 SSR(Server Side Rendering)을 사용한다면 위와 같은 코드 이용 시 아래와 같은 오류가 발생할 수 있다.
Warning: Expected server HTML to contain a matching <div> in <div>.
해결 방법
첫 번째 렌더링이 서버의 초기 렌더와 일치해야하기 때문에, 브라우저에서만 실행되어야하는 코드는 useEffect 코드 내부에서 실행되어야 한다. window 객체는 클라이언트 측에서 브라우저의 요소들과 자바스크립트 엔진들을 담고 있는 객체이기 때문에 useEffect 코드 내부에 존재하거나 @next/dynamic을 통한 lazy loading을 이용하는 해결하는 방법이 있다.
Reference
반응형
'FrontEnd > React.js' 카테고리의 다른 글
[React.js] https에서 http API request 호출하기 (0) | 2023.02.16 |
---|---|
[React.js] Using target="_blank" without rel="noreferrer" (which implies rel="noopener") is a security risk in older browsers (0) | 2022.06.20 |
[React.js] 성능 향상을 위한 코드 분할(React.lazy, Suspense) (0) | 2022.05.19 |
[React.js] React 18의 새로운 기능 (0) | 2022.05.18 |
[React.js] Yarn berry 적용하며 발생한 에러 정리 (2) | 2022.04.13 |
댓글