Ch.11 React 입문 — 컴포넌트 사고방식
리스트 렌더링과 조건부 표시
배열 데이터를 화면에 그리려면?
쇼핑몰 상품 목록, SNS 피드, 댓글 리스트 — 반복되는 데이터를 효율적으로 표시하는 방법
반복 UI를 일일이 작성하지 않으려면?
map()과 조건부 렌더링 — 데이터가 곧 UI가 되는 React의 선언적 방식입니다.
핵심 내용
배열의 각 요소를 JSX로 변환하면 리스트 완성!
const fruits = ["사과", "바나나", "포도", "딸기"];
function FruitList() {
return (
<ul>
{fruits.map((fruit, index) => (
<li key={index}>{fruit}</li>
))}
</ul>
);
}
// 결과:
// • 사과
// • 바나나
// • 포도
// • 딸기map()의 핵심 패턴 `{배열.map(항목 => (<JSX key={고유값}>{항목}</JSX>))}` 배열의 각 요소를 JSX 요소로 변환하여 자동으로 리스트를 만듭니다. for문이 아닌 map() 을 쓰는 이유: JSX 안에서는 표현식만 가능하기 때문!
React에게 '이 요소가 어떤 것인지' 알려주는 신분증 = key
const products = [
{ id: 1, name: "노트북", price: 1200000 },
{ id: 2, name: "마우스", price: 35000 },
{ id: 3, name: "키보드", price: 89000 },
];
function ProductList() {
return (
<ul>
{products.map(product => (
// ✅ 고유한 id를 key로 사용
<li key={product.id}>
{product.name} — {product.price.toLocaleString()}원
</li>
))}
</ul>
);
}
// ❌ index를 key로 쓰면 순서가 바뀔 때 문제!
// <li key={index}> → 삭제/정렬 시 버그 발생 가능key를 써야 하는 이유 1. 성능: React가 변경된 요소만 찾아서 업데이트 (전체 다시 그리지 않음) 2. 정확성: 항목 삭제/추가/정렬 시 올바른 요소를 추적 3. 규칙: key는 형제 요소 사이에서 고유해야 함 ✅ 데이터의 id 사용 | ❌ 배열의 index 사용 (동적 리스트에서 위험)
조건에 따라 다른 UI를 보여주는 3가지 패턴을 알아봅시다
function StatusBadge({ isOnline }) {
// 1️⃣ 삼항 연산자 — 둘 중 하나를 선택
return (
<span className={isOnline ? "online" : "offline"}>
{isOnline ? "🟢 접속 중" : "⚫ 오프라인"}
</span>
);
}
function Notification({ count }) {
// 2️⃣ && 연산자 — 조건이 true일 때만 표시
return (
<div>
<h3>알림</h3>
{count > 0 && (
<span className="badge">{count}개의 새 알림</span>
)}
</div>
);
}
function UserGreeting({ user }) {
// 3️⃣ early return — 조건에 따라 완전히 다른 UI
if (!user) {
return <p>로그인해주세요.</p>;
}
return <h2>환영합니다, {user.name}님!</h2>;
}React에서 배열을 리스트로 렌더링할 때 사용하는 메서드는?
리스트 렌더링에서 key는 배열의 index를 사용하는 것이 가장 안전하다
React에서 조건이 true일 때만 요소를 보여주려면 ___ 연산자를 사용한다
React 입문 완료!
핵심 용어
삼항 연산자
A ? B : C — 조건에 따라 A 또는 B 중 하나를 렌더링
&& 연산자
조건 && <JSX> — 조건이 true일 때만 렌더링 (false면 아무것도 표시 안 함)
early return
if (!조건) return <대체 UI>; — 조건에 따라 완전히 다른 컴포넌트 반환
정리 노트
리스트 렌더링과 조건부 표시 정리
리스트 렌더링
- map()
- 배열 데이터를 JSX 요소 배열로 변환하여 렌더링
- key prop
- 각 리스트 아이템에 고유한 식별자 — React 성능 최적화의 핵심
- key 규칙
- 안정적이고 고유한 값 사용 (인덱스는 비권장)
조건부 렌더링
- 삼항연산자
- condition ? <A /> : <B /> — 두 가지 중 하나 표시
- && 연산자
- condition && <A /> — 조건이 true일 때만 표시
- early return
- if (!data) return <Loading /> — 로딩 상태 처리
key는 React가 어떤 아이템이 변경됐는지 추적하는 '이름표'입니다.
핵심 정리
- 1map()으로 배열 데이터를 JSX 리스트로 변환
- 2key = React가 각 요소를 식별하는 고유 값 (id 사용 권장)
- 3조건부 렌더링: 삼항 연산자, && 연산자, early return
- 4React 입문 완료! 다음은 상태 관리로 살아 움직이는 UI를 만들어봅시다
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작