dynamic
, useEffect
, suppressHydrationWarning
의 차이점과 각각의 사용 상황을 다룬다.dynamic
함수는 클라이언트 전용 컴포넌트를 동적으로 로드할 수 있게 해준다.import dynamic from 'next/dynamic';
const HydrationTestNoSSR = dynamic(() => import('@/components/hydrationTest'),
{ssr: false});
const Page = () => {
<div>
<h1>My Page</h1>
<HydrationTestNoSSR />
</div>
}
export default Page;
useEffect
훅은 컴포넌트가 마운트된 후 클라이언트 사이드에서 실행된다.import { useState, useEffect } from 'react';
const TimeComponent = () => {
const [time, setTime] = useState('');
useEffect(() => {
setTime(new Date().toLocalTimeString());
}, []);
return (
<div>
The Current time is: {time}
</div>
);
};
export default TimeComponent;
import { useState, useEffect } from 'react';
const TimeComponent = () => {
const [time, setTime] = useState('');
useEffect(() => {
setTime(new Date().toLocalTimeString());
}, []);
return (
<div suppressHydrationWarning>
The Current time is: {time}
</div>
);
};
export default TimeComponent;
Next.js 에서 서버와 클라이언트 간의 동기화는 중요한 과제이다.
dynamic
은 동적 컴포넌트 로딩과 초기 로딩 성능 최적화에 유용하며,
useEffect
는 클라이언트 사이드 로직 실행에 필수적이다.
suppressHydrationWarning
은 불필요한 경고를 억제하여 클라이언트에서만 동적으로 변하는 데이터를 처리할 때 유용하다.
각 방법의 적절한 사용을 통해 더 나은 사용자 경험을 제공할 수 있다.