9강예상 3분입문
[요약] Part 2. 화면을 구성하는 Next.js와 React 기초
Part 2. 화면을 구성하는 Next.js와 React 기초의 핵심 내용을 정리하고 복습하는 요약 회차입니다.
Part 2에서 다룬 React 컴포넌트 생태계와 Next.js 코어 아키텍처를 요약합니다.
- 화면의 구역을 분할하고 조립하는 방법
- 컴포넌트 간 데이터 전달 규칙 (Props & State)
- 서버/클라이언트 컴포넌트의 역할 분담 체계
- 폴더 기반 라우팅 및 폼 핸들링 핵심 개념 복습
컴포넌트 분리 예시
export default function Board() {
return (
<div>
<PostList />
<CommentForm />
</div>
);
}화면을 세밀하게 조립하는 블록: 컴포넌트, Props, State
거대한 페이지를 한 번에 찍어내지 않고, 작고 독립적인 부품을 조립하여 완성합니다.
독립적이고 재사용 가능한 UI 부품, 컴포넌트
- 개념: 버튼, 입력창, 네비게이션 바 등을 각각 독립된 자바스크립트 함수로 쪼갠 단위.
- AI 프롬프트 팁: "게시판 전체를 만들어 줘" 대신, "글 목록 컴포넌트와 댓글 입력 컴포넌트를 분리해서 만들어 줘"로 세밀하게 지시할 것.
부품 간의 끈끈한 소통: Props와 State
- Props (Properties): 부모가 자식에게 전달하는 읽기 전용 설정값. (위에서 아래로 단방향 전달)
- State (상태): 컴포넌트 스스로 기억하고 갱신하는 역동적인 데이터 (예: 체크박스 상태, 모달 열림 여부).
- 리렌더링: State가 변하면 해당 컴포넌트와 자식 요소들은 새로운 데이터를 반영해 즉시 화면을 다시 그림.
Props와 State의 엄격한 철학적 규칙
- 1데이터의 폭포수 원칙: Props는 오직 위에서 아래로(부모에서 자식으로) 단방향으로만 흐릅니다.
- 2반응성 원칙: State의 값이 조금이라도 변경되는 순간, 해당 컴포넌트와 하위 컴포넌트들은 즉시 리렌더링 됩니다.
권력의 분할: 서버 컴포넌트와 클라이언트 컴포넌트 구분
Next.js에서 가장 에러가 자주 발생하는, 가장 중요한 두 컴포넌트의 역할 분담입니다.
성능의 제왕, 서버 컴포넌트 (Server Component)
- 기본값: Next.js의 모든 파일은 특별한 지시어가 없으면 서버 컴포넌트입니다.
- 역할: 보이지 않는 뒷단 서버에서 실행되며 DB 접근 및 보안 처리에 탁월.
- 장점: 무거운 JS 덩어리를 브라우저로 보내지 않아 쾌속 로딩 속도와 완벽한 SEO(검색엔진 최적화) 보장.
상호작용의 선봉장, 클라이언트 컴포넌트 (Client Component)
- 선언: 파일 최상단에 마법의 주문 `'use client'` 선언 필수.
- 역할: 브라우저 상에서 동작하며 사용자와 실시간 상호작용 처리.
- 사용 타이밍: `onClick` 등 이벤트 리스너가 필요하거나, `useState` 등 동적 상태 관리가 필요할 때 사용. (선언 누락 시 치명적 에러 발생)
두 컴포넌트 사이의 정확한 선택 가이드
| 상황 | 선택 | 이유 |
|---|---|---|
| 서버에서 데이터만 읽어 정적으로 화면에 뿌려줄 때 | 서버 컴포넌트 (지시어 없음) | 무거운 코드가 유저에게 전송되지 않아 성능이 압도적으로 빠름 |
| 클릭(onClick)이나 상태 변화(useState) 등 조작이 수반될 때 | 클라이언트 컴포넌트 ('use client' 명시) | 지시어 누락 시 이벤트 리스너 인식 불가로 화면 멈춤 에러 발생 |
직관의 끝: 폴더 시스템 기반의 라우팅과 폼 핸들링
복잡한 설정 파일 없이 폴더 트리만으로 URL과 통신을 조작합니다.
폴더 이름이 곧 접속 주소가 되는 라우팅
- App Router 규칙: 폴더의 이름과 배치 구조가 곧 브라우저 URL이 됨.
- 정적 라우팅: `app/profile/settings/page.tsx` ➜ `도메인.com/profile/settings` 접속.
- 동적 라우팅: `app/products/[id]/page.tsx` ➜ 대괄호를 사용해 수천 개의 유동적인 상품 주소 번호를 한 번에 처리.
사용자 입력 데이터를 다루는 관문, Form 처리
- 현대적 폼 핸들링: 버튼 클릭 시 화면 통째 깜빡임 없이(새로고침 방지) 부드럽게 데이터를 서버로 전송.
- Server Actions: 복잡한 API 엔드포인트 없이 폼 데이터를 바로 서버 함수로 밀어 넣을 수 있는 최신 권장 패턴.
개념 퀴즈
퀴즈 답을 맞춰야 학습 완료가 됩니다.다음 중 Next.js의 서버 컴포넌트와 클라이언트 컴포넌트 생태계에 대한 설명 중 가장 정확한 것은 무엇입니까?
3줄 요약
- 1화면은 재사용 가능한 '컴포넌트'로 쪼개 조립하며, 단방향 'Props'와 스스로 기억하는 'State'를 통해 데이터를 통제합니다.
- 2데이터를 퍼오는 작업은 가벼운 '서버 컴포넌트'에, 인터랙션이 일어나는 특정 구역은 '클라이언트 컴포넌트'로 역할을 분리합니다.
- 3폴더의 구조 자체가 직관적인 라우팅 주소가 되며, Server Actions 등 폼 핸들링으로 깜빡임 없는 데이터 전송을 구현합니다.