반응형
React와 Next.js는 현대 웹 개발에서 가장 인기 있는 기술 스택 중 하나입니다. 이 글에서는 React의 라이프사이클과 Next.js의 차이점을 자세히 알아보겠습니다.
React의 라이프사이클이란?
React 컴포넌트는 생성되고, 업데이트되고, 사라지는 과정을 거칩니다. 이 과정을 라이프사이클(Lifecycle)이라고 부릅니다. React는 클래스 컴포넌트와 함수형 컴포넌트 두 가지 방식으로 라이프사이클을 관리할 수 있습니다.
1. 클래스 컴포넌트의 라이프사이클
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>;
}
}
2. 함수형 컴포넌트의 라이프사이클 (React Hooks)
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 vs React: 라이프사이클 차이
Next.js는 React 위에 구축된 프레임워크입니다. 라이프사이클 자체는 React와 동일하지만, SSR(Server Side Rendering) 또는 Static Generation 등의 기능으로 인해 몇 가지 중요한 차이점이 생깁니다.
주요 차이점
구분 | React | Next.js |
---|---|---|
실행 위치 | 브라우저(Client) | 브라우저 + 서버 |
라이프사이클 | 브라우저에서만 작동 | 일부 라이프사이클은 서버에서는 작동안 함 |
예시 | window 객체 접근 항상 가능 | Next.js에서는 클라이언트 측에서만 가능 (서버 측에서는 undefined) |
추가 기능 | 없음 | getServerSideProps, getStaticProps, app router 등 서버 전용 함수 제공 |
React는 프레임워크일까?
아니요. React는 프레임워크가 아니라 라이브러리입니다.
React가 라이브러리인 이유
- React는 오직 UI(View)만 다룹니다
- 라우팅, 상태관리, 서버 통신 등의 기능은 직접 선택해서 조합해야 합니다
- 예: React Router, Redux, Axios 등
Next.js는 프레임워크인 이유
- 라우팅, 데이터 패칭, API 라우트, SSR/SSG, SEO 등 다양한 기능이 내장
- "개발 구조가 정해져 있음" → 프레임워크에 해당
React vs Next.js 상세 비교
항목 | React | Next.js |
---|---|---|
종류 | 라이브러리 | 프레임워크 |
목적 | UI 구성 | 전체 웹 앱 구성 |
라우팅 | 직접 설치 필요 (React Router) | 파일 기반 라우팅 제공 |
SSR 지원 | ❌ 클라이언트 전용 | ✅ 서버 사이드 렌더링 지원 |
SEO | 상대적으로 어려움 | 매우 뛰어남 |
사용 예 | SPA (단일 페이지 앱) | 블로그, 커머스, 포트폴리오 등 SSR/SSG 필요한 앱 |
Next.js의 주요 기능
1. getServerSideProps
export async function getServerSideProps(context) {
const data = await fetchData();
return {
props: { data }
};
}
2. getStaticProps
export async function getStaticProps() {
const data = await fetchData();
return {
props: { data },
revalidate: 60 // 60초마다 재생성
};
}
3. App Router
// app/page.js
export default function Page() {
return <h1>Hello, Next.js!</h1>
}
결론
React 라이프사이클
- 컴포넌트 생성-렌더링-업데이트-제거 과정을 관리하는 메커니즘
- 클래스/함수형 모두 지원
Next.js와의 차이
- Next.js는 SSR이 있어서 서버/클라이언트의 구분이 중요
- 일부 브라우저 API는 클라이언트 측에서만 사용 가능
React vs Next.js
- React는 UI를 위한 도구
- Next.js는 웹앱 전체를 위한 솔루션
프로젝트의 요구사항에 따라 React만 사용할지, Next.js를 사용할지 선택하는 것이 중요합니다. SEO가 중요하거나 서버 사이드 렌더링이 필요한 프로젝트라면 Next.js를, 단순한 SPA를 만들고 싶다면 React를 선택하는 것이 좋습니다.
참고 자료
반응형
'Frontend Development' 카테고리의 다른 글
브라우저 저장소 API: localStorage vs sessionStorage vs Cookie 완벽 가이드 (0) | 2025.05.29 |
---|---|
React 로딩 상태 관리: useEffect vs Suspense (2) | 2025.05.29 |
프론트엔드 상태 관리: Flux, Proxy, Atomic 패턴과 주요 라이브러리 비교 (4) | 2025.05.28 |
Shadow DOM 완전 정리: 웹 컴포넌트의 핵심 기술 (0) | 2025.05.28 |
Netflix의 아키텍처와 API 성능 최적화 전략 (0) | 2025.05.28 |