반응형
//data.js
export const CORE_CONCEPTS = [
{
image: componentsImg,
title: 'Components',
description:
'The core UI building block - compose the user interface by combining multiple components.',
},
{
...
},
...
import { CORE_CONCEPTS } from "./data.js";
<ul>
<CoreConcept {...CORE_CONCEPTS[0]} />
<CoreConcept {...CORE_CONCEPTS[1]} />
<CoreConcept {...CORE_CONCEPTS[2]} />
<CoreConcept {...CORE_CONCEPTS[3]} />
</ul>
- 데이터를 출력하기 위해 4개의 CoreConcept 컴포넌트가 사용되고 있다.
- 만약 4개의 데이터 중 한 개가 사라지면 해당 영역에 빈 내용을 보여줄 것이다.
- 불필요한 반복 코드를 줄여야 한다.
- 데이터 소스가 변경되면 컴포넌트의 수가 동적으로 변경되어야 한다.
import { CORE_CONCEPTS } from "./data.js";
<ul>
{CORE_CONCEPTS.map((item) => (
<CoreConcept {...item} />
))}
</ul>
- map()을 통해 CORE_CONCEPTS 배열의 모든 원소를 가져오고, 각 원소를 <CoreCocept>으로 반환하다.
- …는 스프레드 연산자로 객체의 키값을 모두 가져올 수 있다.
- 하지만 이렇게 하면 경고가 나온다.
- Warning: Each child in a list should have a unique “key” prop
- 목록에 있는 각 자녀가 고유의 key 속성을 가져야 한다
- 이 경고를 제거하기 위해선 컴포넌트 안에 key prop을 추가해야 한다.
<ul>
{CORE_CONCEPTS.map((item) => (
<CoreConcept key={item.title} {...item} />
))}
</ul>
- key는 식별할 수 있는 고유한 값이어야 한다.
- 여기서는 title을 고유한 값으로 쓸 수 있다.
반응형
'Dev > React' 카테고리의 다른 글
[React] 컴포넌트를 언제 분리해야 할까? (0) | 2024.07.10 |
---|---|
[React] Fragment(프레그먼트) 사용법 (0) | 2024.07.10 |
[React] UI 업데이트 State Hooks (0) | 2024.07.09 |
[React] 이벤트 처리하기 (0) | 2024.07.09 |
[React] Prop(속성)으로 컴포넌트 재사용 (0) | 2024.07.05 |