1) array 자료 갯수만큼 함수안의 코드를 실행시켜 준다. 아래와 같이 console.log(1)을 적으면 1를 세 번 실행시켜 준다
[1,2,3].map(function() {
console.log(1)
})
2) 함수의 파라미터는 array 안에 있던 자료이다. 아래 함수는 'a'를 파라미터로 받았고 그렇기 때문에 [배열안에 들어가 있는 1,2,3]이 돌아가면서 (a) 안으로 들어가 console창에 출력된다
[1,2,3].map(function(a) {
console.log(a)
})
3) return 안에 무언가를 적으면 array로 담아준다. 아래 코드는 콘솔에 찍으면 return 되는 값인 '1233211'이 배열의 갯수인 3번만큼 반복되서 출력된다
[1,2,3].map(function(a) {
return '1233211'
})
💡 배열을 반복할 때 주의점
배열에 있는 요소의 인덱스를 사용하는 것이 아래 오류를 억제하는 방법이라는 것은 일반적인 오해
Each child in an array should have a unique "key" prop.
Array가 확실히 정적이라는 것을 알면 위의 사항을 항상 적용할 필요는 없지만 가능하면 모범 사례를 적용하는 것을 추천
React 개발자는 아래와 같이 언급했다
요약하면, key는
아래 예시는 사람들이 많이 하는 실수라고 한다. 잘못 된 방법은 아니어서 정적인 배열을 다룰 때(예를 들어, HOME, SHOP, CONTACT US와 같은 Nav 메뉴)는 합당한 어프로치이지만 어떤 아이템들을 더하고 빼거나 재배치할 때 주의해야 한다.
// BAD EXAMPLE(potentially)
<tbody>
{rows.map((row, i) => {
return <ObjectRow key={i} />;
})}
</tbody>
// BAD EXAMPLE
<tbody>
{rows.map((row) => {
return <ObjectRow key={Math.random()} />;
})}
</tbody>
key를 선택하는 가장 좋은 방법은 형제 중에서 목록 항목을 고유하게 식별하는 문자열을 사용하는 것. 대부분 데이터의 ID를 key로 사용한다.
// GOOD EXAMPLE
<tbody>
{rows.map((row) => {
return <ObjectRow key={row.uniqueId} />;
})}
</tbody>
참고 자료:
코딩애플 유료강의: React 리액트 기초부터 쇼핑몰 프로젝트까지!