[Next.js] useEffect vs getStaticProps vs getServerSideProps
-
반응형
Next.js는 기본적으로 다양한 데이터 fetch을 제공한다. 기본적인 리액트의 useEffect 뿐만 아니라 getStaticProps 그리고 getServerSideProps까지. 우리는 여기서 늘 데이터를 어떤 방식으로 가져오게 될지 고민하게 되는데, 기본적으로 세 가지 데이터 fetch 방식을 이미 알고 있더라도, 이번에 더 자세하게 각각의 장단점과 언제 사용하면 좋을지 알아보자.
1. useEffect
useEffect는 React Hook이며, 컴포넌트가 마운트될 때 또는 특정 변수가 변경될 때 코드를 실행하는 데 사용됩니다. Next.js에서 useEffect는 클라이언트 측에서 데이터를 가져오는 데 사용할 수 있습니다.
장점:
컴포넌트 로직과 데이터 가져오기 코드를 분리할 수 있습니다.
다양한 조건에 따라 데이터를 동적으로 가져올 수 있습니다.
단점:
페이지가 처음 로드될 때 데이터를 가져오기 때문에 페이지 렌더링 속도가 느려질 수 있습니다.
클라이언트 측 JavaScript가 비활성화된 경우 작동하지 않습니다.
2. getStaticProps
getStaticProps는 Next.js 페이지 컴포넌트의 특수 함수이며, 빌드 타임에 실행됩니다. 이 함수는 페이지에 필요한 데이터를 반환하고, 컴포넌트 props로 전달됩니다.
장점:
페이지 렌더링 속도를 향상시킬 수 있습니다.
SEO(검색 엔진 최적화)에 유리합니다.
클라이언트 측 JavaScript에 의존하지 않습니다.
단점:
빌드 타임에 데이터를 가져오기 때문에 데이터가 변경될 때마다 페이지를 다시 빌드해야 합니다.
실시간 데이터를 가져오는 데 사용할 수 없습니다.
3. getServerSideProps
getServerSideProps는 getStaticProps와 유사하지만, 빌드 타임이 아닌 서버 측에서 매 요청마다 실행됩니다. 이 함수는 페이지에 필요한 데이터를 반환하고, 컴포넌트 props로 전달됩니다.
장점:
페이지 렌더링 속도를 향상시킬 수 있습니다.
실시간 데이터를 가져오는 데 사용할 수 있습니다.
사용자별 맞춤형 데이터를 제공할 수 있습니다.
단점:
getStaticProps보다 서버 리소스를 더 많이 사용합니다.
getStaticProps보다는 SEO(검색 엔진 최적화)에 유리하지 않습니다.
4. 어떤 옵션을 선택해야 할까요?
다음은 각 옵션을 사용해야 하는 경우의 예입니다. 이는 개인적인 의견이므로 참조만 해주세요.