1. JavaScript
const a = [1, 2, 3, 4];
const b = a.map(item => item*2);
console.log(b) // [2, 4, 6, 8]
2. React
const numbers = [1, 2, 3, 4];
const listItem = numbers.map(number => (
<li>{number}</li>
));
// 출력
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
1. 화살표 함수의 중괄호, 소괄호
JavaScript에서 화살표 함수를 사용할 때 중괄호를 사용하면 함수 본문을 의미, 이 경우 반환 값이 있을 때는 return
키워드를 사용해야 함
반면에 소괄호를 사용하면 표현식을 의미하며, 표현식의 결과 값이 자동으로 반환되므로, JSX 문법에서는 return
을 생략하기 위해 소괄호를 많이 사용
2. 값 반환
map
함수는 항상 값을 반환하야 한다. 만약 조건부 렌더링을 사용하고 특정 조건에서 아무것도 렌더링하지 않으려면 null
을 반환하야 함numbers.map(number => {
if (number > 2) {
return <li>{number}</li>
} else {
return null;
}
});
3. key
key
prop을 부여해야 함key
는 React가 어떤 항목을 변경, 추가 또는 삭제해야 하는지를 파악하는데 도움을 줌const todoList = [
{id: '1', text: 'todo1'},
{id: '2', text: 'todo2'},
{id: '3', text: 'todo3'},
];
return (
<ul>
{todoList.map(todo => (
<li key={todo.id}>{todo.text}</li>
))}
</ul>
);
React에서 리스트를 렌더링할 때, key
속성에 배열의 인덱스를 할당하는 것은 간단하지만 리스트가 동적으로 변경될 경우 문제를 일으킬 수 있음
리스트에 새로운 항목이 추가되거나 삭제되면 기존 항목의 인덱스가 변하게 되어, React는 모든 항목을 새로운 것으로 인식해 불필요한 리렌더링을 일으키게 됨
정적인 리스트에서만 인덱스를 key
로 사용해야 함
중복된 key
를 사용하면, React는 그것들이 같은 요소라고 생각할 수 있어 요소에 대한 변경이 다른 요소에도 적용될 수 있으며 렌더링 오류를 일으킬 수 있고 애플리케이션의 동작에 문제를 일으킬 수 있음
개발자 도구 콘솔에 경고메시지가 표시되며, 개발 과정에서 불필요한 혼란을 일으킬 수 있음