프론트엔드/React
[React] 멀티 데이터를 화면에 출력하는 법, 리스트 출력 방법, map() 함수
여행자0
2025. 2. 4. 01:16
배열로 들어오는 멀티 데이터를 화면에 출력하려면 map() 을 사용하면 된다.
import React, { useState } from 'react'
import './App.css'
function App() {
//users는 배열이고, 배열 안은 객체 형태로 들어있다.
const users = [
{email: 'fruit1@gmail.com', name: "apple"},
{email: 'fruit2@gmail.com', name: "melon"},
{email: 'fruit3@gmail.com', name: "peach"},
{email: 'fruit4@gmail.com', name: "berry"},
]
return (
<table>
<thead>
<tr>
<th>이메일</th>
<th>이름</th>
</tr>
</thead>
<tbody>
{users.map( (user) => (<User userData={user} />) )}
</tbody>
</table>
)
}
const User = ({userData}) => {
return (
<tr>
<td>{userData.email}</td>
<td>{userData.name}</td>
</tr>
)
}
export default App
tbody 영역에 user.map() 으로 User 컴포넌트 리스트를 렌더링하였다.
📌 map() 함수란?
map() 함수는 배열을 순회하면서 각 요소를 변형하고 새로운 배열을 반환하는 메서드이다.
리액트에서는 주로 컴포넌트 리스트를 렌더링할 때 사용된다.
map() 기본 문법
const newArray = array.map((element, index, array) => {
return newElement;
});
- element : 현재 순회 중인 배열의 요소
- index : 현재 요소의 인덱스
- array : 원본 배열 (잘 사용하지 않음)
- newElement : 변환된 요소 (새로운 배열의 요소가 됨)
리액트에서 map() 사용 예제
1️⃣ 배열을 활용한 리스트 렌더링
import React from "react";
const fruits = ["🍎 Apple", "🍌 Banana", "🍊 Orange"];
function FruitList() {
return (
<ul>
{fruits.map((fruit, index) => (
<li key={index}>{fruit}</li> // key 속성 추가
))}
</ul>
);
}
export default FruitList;
✅ 주의! key 속성은 리스트 렌더링에서 필수입니다. 고유한 값을 사용해야 성능 최적화가 가능합니다.
2️⃣ 객체 배열을 map()으로 렌더링
const users = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
{ id: 3, name: "Charlie" },
];
function UserList() {
return (
<ul>
{users.map((user) => (
<li key={user.id}>{user.name}</li> // id를 key로 사용
))}
</ul>
);
}
✅ id를 key로 사용하면 리스트 재렌더링 성능이 개선됩니다.
3️⃣ JSX 내에서 조건부 렌더링과 함께 사용
function FilteredUsers({ users }) {
return (
<ul>
{users
.filter((user) => user.age >= 18) // 나이 필터링
.map((user) => (
<li key={user.id}>{user.name} (Age: {user.age})</li>
))}
</ul>
);
}
✅ filter()와 함께 사용하면 특정 조건을 만족하는 요소만 렌더링할 수 있습니다.
🔥 map()을 사용할 때 주의할 점
- key는 반드시 고유한 값이어야 함
- 인덱스를 key로 쓰는 건 비추천 (배열이 변경되면 문제가 발생할 수 있음)
- id 같은 고유한 값을 사용하는 것이 좋음
- JSX에서 {} 안에 map() 사용
- JSX 내부에서 {}로 감싸지 않으면 오류 발생
- return 없이 한 줄로 표현하려면 () 사용
- 원본 배열은 변경되지 않음
- map()은 새로운 배열을 반환하며, 원본 배열을 변경하지 않음
✅ 마무리
- map()은 배열을 변환하여 새로운 배열을 반환하는 메서드
- 리액트에서는 리스트 렌더링할 때 자주 사용됨
- key 속성을 올바르게 설정하는 것이 중요
- map()과 함께 filter(), sort() 등을 조합하면 더 강력한 기능 구현 가능