● Hydration 오류는 Next.js와 React에서 발생하는 일반적인 문제입니다.        
  Hydration이란? 
  Hydration은 서버에서 렌더링된 정적 HTML을 클라이언트에서 React 컴포넌트로 
   "활성화"하는 과정입니다. 
  1. 서버: HTML 생성 → 브라우저로 전송 
  2. 브라우저: HTML 표시 (정적 상태) 
  3. React: JavaScript 로드 후 HTML에 이벤트 연결 (Hydration) 
  Hydration 오류가 발생하는 경우 
  1. 시간/날짜 표시 
  // ❌ 문제: 서버와 클라이언트 시간이 다름 
  <div>{new Date().toLocaleString()}</div> 
  // 서버: "2025-07-26 12:26:14" 
  // 클라이언트: "2025-07-26 12:26:17" (3초 후) 
  // ✅ 해결: useEffect 사용 
  const [time, setTime] = useState(''); 
  useEffect(() => { 
    setTime(new Date().toLocaleString()); 
  }, []); 
  2. Math.random() 사용 
  // ❌ 문제: 서버와 클라이언트의 랜덤값이 다름 
  <div>{Math.random()}</div> 
  // ✅ 해결: useEffect 사용 
  const [random, setRandom] = useState(0); 
  useEffect(() => { 
    setRandom(Math.random()); 
  }, []); 
  3. 브라우저 전용 API 사용 
  // ❌ 문제: window는 서버에 없음 
  <div>{window.innerWidth}px</div> 
  // ✅ 해결: useEffect 사용 
  const [width, setWidth] = useState(0); 
  useEffect(() => { 
    setWidth(window.innerWidth); 
  }, []); 
  4. 조건부 렌더링 
  // ❌ 문제: localStorage는 서버에 없음 
  {localStorage.getItem('user') && <UserMenu />} 
  // ✅ 해결: useEffect 사용 
  const [user, setUser] = useState(null); 
  useEffect(() => { 
    setUser(localStorage.getItem('user')); 
  }, []); 
  오류가 문제가 되는 이유 
  1. 사용자 경험 저하: 깜빡임, 레이아웃 변경 
  2. 성능 문제: React가 전체 DOM을 다시 렌더링 
  3. SEO 영향: 검색 엔진이 잘못된 콘텐츠 인덱싱 
  디버깅 방법 
  // suppressHydrationWarning 사용 (임시 해결책) 
  <div suppressHydrationWarning> 
    {new Date().toLocaleString()} 
  </div> 
  // 또는 동적 import 사용 
  const DynamicComponent = dynamic( 
    () => import('./TimeComponent'), 
    { ssr: false } 
  );