React와 Next.js는 현대 웹 개발에서 가장 인기 있는 기술 스택 중 하나입니다. 이 글에서는 React의 라이프사이클과 Next.js의 차이점을 자세히 알아보겠습니다.
React 컴포넌트는 생성되고, 업데이트되고, 사라지는 과정을 거칩니다. 이 과정을 라이프사이클(Lifecycle)이라고 부릅니다. React는 클래스 컴포넌트와 함수형 컴포넌트 두 가지 방식으로 라이프사이클을 관리할 수 있습니다.

class MyComponent extends React.Component {
constructor() {
super();
console.log("1. 생성"); // 초기화
}
componentDidMount() {
console.log("2. 마운트 완료"); // 최초 렌더 후
}
componentDidUpdate() {
console.log("3. 업데이트"); // 상태나 props 변경 시
}
componentWillUnmount() {
console.log("4. 언마운트"); // 컴포넌트 제거 시
}
render() {
return <div>Hello</div>;
}
}
import { useEffect } from 'react';
function MyComponent() {
useEffect(() => {
console.log('1. 마운트됨');
return () => {
console.log('2. 언마운트됨');
};
}, []);
return <div>Hello</div>;
}
| 단계 | 클래스 컴포넌트 | 함수형 컴포넌트 | 설명 |
|---|---|---|---|
| 생성 | constructor | 없음 | 컴포넌트 초기화 |
| 마운트 | componentDidMount | useEffect(() => {}, []) | 컴포넌트가 처음 나타남 |
| 업데이트 | componentDidUpdate | useEffect(() => {}, [state]) | 상태나 props가 바뀔 때 |
| 언마운트 | componentWillUnmount | return () => {} | 컴포넌트가 사라질 때 |
Next.js는 React 위에 구축된 프레임워크입니다. 라이프사이클 자체는 React와 동일하지만, SSR(Server Side Rendering) 또는 Static Generation 등의 기능으로 인해 몇 가지 중요한 차이점이 생깁니다.
| 구분 | React | Next.js |
|---|---|---|
| 실행 위치 | 브라우저(Client) | 브라우저 + 서버 |
| 라이프사이클 | 브라우저에서만 작동 | 일부 라이프사이클은 서버에서는 작동안 함 |
| 예시 | window 객체 접근 항상 가능 | Next.js에서는 클라이언트 측에서만 가능 (서버 측에서는 undefined) |
| 추가 기능 | 없음 | getServerSideProps, getStaticProps, app router 등 서버 전용 함수 제공 |
아니요. React는 프레임워크가 아니라 라이브러리입니다.
| 항목 | React | Next.js |
|---|---|---|
| 종류 | 라이브러리 | 프레임워크 |
| 목적 | UI 구성 | 전체 웹 앱 구성 |
| 라우팅 | 직접 설치 필요 (React Router) | 파일 기반 라우팅 제공 |
| SSR 지원 | ❌ 클라이언트 전용 | ✅ 서버 사이드 렌더링 지원 |
| SEO | 상대적으로 어려움 | 매우 뛰어남 |
| 사용 예 | SPA (단일 페이지 앱) | 블로그, 커머스, 포트폴리오 등 SSR/SSG 필요한 앱 |
export async function getServerSideProps(context) {
const data = await fetchData();
return {
props: { data }
};
}
export async function getStaticProps() {
const data = await fetchData();
return {
props: { data },
revalidate: 60 // 60초마다 재생성
};
}
// app/page.js
export default function Page() {
return <h1>Hello, Next.js!</h1>
}
React 라이프사이클
Next.js와의 차이
React vs Next.js
프로젝트의 요구사항에 따라 React만 사용할지, Next.js를 사용할지 선택하는 것이 중요합니다. SEO가 중요하거나 서버 사이드 렌더링이 필요한 프로젝트라면 Next.js를, 단순한 SPA를 만들고 싶다면 React를 선택하는 것이 좋습니다.