배열 등을 이용하여 반복적인 컴포넌트 랜더링
<aside> 💡 map 반복 문법 arr.map(callback); → callback 함수의 파라미터로 전달 된 배열 내 각 요소를 원하는 규칙에 따라 변환 후 그 결과로 새로운 배열을 반환
</aside>
map 문법을 사용하여 콜백 함수로 전달되는 파라미터는 3가지를 가질 수 있음
const numbers = [1, 2, 3, 4, 5];
const results = numbers.map(num => num * num);
// [1, 4, 9 ,16, 25]
const fruit = ['사과', '바나나', '수박'];
fruit.map((currentValue, index, array) => {
console.log(currentValue); // 현재 반복 처리하고 있는 요소 출력
console.log(index); // 반복하는 인덱스 번호 출력
console.log(array); // [사과, 바나나, 수박] 원본 배열 출력
})
map 문법을 사용하여 props 객체의 배열을 map으로 활용하여 렌더링이 가능함
function Items({names}) {
return (
<ul>
{names.map((name, index) => <li key={index}>{name}</li>)}
</ul>
);
}
const names = ['홍길동', '유관순', '윤봉길', '이순신', '임꺽정'];
ReactDOM.createRoot(document.getElementById('root')).render(<Items names={names}/>);
→ 해당 예시와 같이 반복되는 요소에는 key값을 부여해 주는 것이 좋다.
key란?
리액트에서 key는 컴포넌트 배열을 렌더링 했을 때 어떤 원소에 변동이 있는지를 알아내기 위해 사용하는 식별자 역할
key가 존재하지 않을 때는 가상DOM이 실제DOM과 비교하는 Diffing 과정에서 리스트를 순차적으로 다 비교해 가며 변화를 감지함.
key가 존재한다면 이 값을 가지고 어떤 변화가 일어났는지 더 빨리 감지 가능함