React · 06 목록의 key와 정체성
단계: 컴포넌트와 상태 계산 · 편집 가능한 예제 · 저장 ID: react-step-06
목표와 학습 후 역량
- id key에서 메모 A가 원래 카드에 남는다.
- index key 대조 결과를 id와 함께 기록한다.
선수 지식
6단위는 5단위 결과물과 실험 기록을 이어 사용합니다.
핵심 개념과 설명
안정된 key
key는 형제 항목의 정체성을 나타냅니다. 배열 순번을 쓰면 재정렬 후 로컬 입력이 다른 데이터에 붙을 수 있습니다.
상태 위치
컴포넌트 상태는 트리의 위치와 타입·key에 연결됩니다. 데이터 id와 정렬 순서를 분리해야 편집 대상이 유지됩니다.
실습 준비
예제 화면의 실행 범위 안내를 먼저 확인하세요. 다음은 과제를 별도 프로젝트로 확장할 때의 준비 환경입니다. 별도 React Vite 프로젝트의 JSX 실습입니다. Node와 패키지 버전·lockfile을 기록하고 프로젝트 개발 서버에서 실행하세요. 내장 편집기는 범용 JSX 컴파일러가 아닙니다.
연결된 예제는 출발점입니다. 아래 과제 전체가 완성된 코드는 아니며, 예제의 지원 범위를 넘는 작업은 별도 프로젝트에서 수행하세요.
실습 과제
- src/CardRow.jsx에 로컬 메모 input을 추가하세요.
- CardList에서 id key와 index key를 전환하는 실험 분기를 만드세요.
- 첫 카드에 A를 입력하고 목록을 역순으로 바꿔 메모가 붙은 id를 기록하세요.
관찰할 변수
| 변수 | 기준 조건 | 바꿀 조건 | 예상할 변화·검증 가설 |
|---|---|---|---|
| key | index | item.id | 역순 정렬 뒤에도 메모가 같은 id에 남는다. |
표의 예상은 측정 결과가 아닙니다. 한 번에 한 조건만 바꾸고 실제 결과가 다르면 원인을 기록하세요.
완료 조건
- id key에서 메모 A가 원래 카드에 남는다.
- index key 대조 결과를 id와 함께 기록한다.
자가 점검
- key를 props에서 바로 읽을 수 있나요?
- 매 렌더 무작위 key를 만들면 무엇이 사라지나요?
공식 참고
연결된 예제와 실행 범위
실제 React API 실험입니다. JSX 대신 createElement를 사용합니다.
원본 코드·기록은 자동으로 덮어쓰지 않습니다. 기존 예제를 초기화할 때도 필기는 유지됩니다.
다음 학습
이전: 조건부 화면과 빈 상태 · 다음: 제어 입력과 폼 검증