Hydration 오류란?

서버에서 렌더링된 HTML과 클라이언트에서 React가 다시 렌더링하려는 내용이 일치하지 않을 때 발생합니다.


❓ 하이드레이션이란?


🔥 하이드레이션 오류 주요 원인

1. 비결정적 값 사용 (랜덤/시간 등)

export default function Page() {
  return <div>{Math.random()}</div>; // ❌ 오류 가능
}

✅ 해결: useEffect 안에서 처리하거나 클라이언트 전용 렌더링


2. 브라우저 전용 API 직접 사용 (window, localStorage 등)

export default function Page() {
  return <div>{window.innerWidth}</div>; // ❌ SSR 시 오류
}

✅ 해결:

'use client';

import { useEffect, useState } from 'react';

export default function Page() {
  const [width, setWidth] = useState(0);

  useEffect(() => {
    setWidth(window.innerWidth);
  }, []);

  return <div>{width}</div>;
}


3. 조건부 렌더링의 불일치