반응형
📜 리스트 렌더링 (List Rendering)
React에서 배열을 동적으로 화면에 출력하는 작업은 리스트 렌더링이라고 부릅니다. 이는 자주 사용되는 기능으로, 데이터를 화면에 나열하거나 반복적인 UI 요소를 만들 때 유용합니다.
🔍 기본 리스트 렌더링
리스트 렌더링을 할 때는 map() 메서드를 사용하여 배열을 순회하고, 각 항목을 JSX로 반환합니다.
import { useState } from 'react';
function ItemList() {
const items = ['사과', '바나나', '체리'];
return (
<ul>
{items.map(item => (
<li key={item}>{item}</li>
))}
</ul>
);
}
위 예제에서는 map() 메서드를 사용하여 배열 items의 각 항목을 <li> 엘리먼트로 감싸서 출력합니다. 여기서 중요한 점은 각 항목에 key 속성을 지정해야 한다는 것입니다. 이는 React가 렌더링 성능을 최적화하고, 항목들이 변경될 때 올바르게 추적할 수 있게 합니다.
📝 조건부 렌더링과 리스트 렌더링
리스트 렌더링을 하면서 조건부로 요소를 표시할 수 있습니다. 예를 들어, 배열이 비어있으면 메시지를 표시하는 등의 처리가 가능합니다.
function ItemList() {
const items = [];
return (
<div>
{items.length === 0 ? (
<p>항목이 없습니다.</p>
) : (
<ul>
{items.map(item => (
<li key={item}>{item}</li>
))}
</ul>
)}
</div>
);
}
💡 리스트 렌더링 팁
- key 속성: 각 항목에 고유한
key값을 할당하여, React가 각 항목을 구별하고 효율적으로 업데이트할 수 있도록 합니다. - 불변성 유지: 배열을 직접 수정하는 대신, 새 배열을 생성하고 상태를 업데이트하세요. 예:
setItems([...items, newItem]) - 큰 리스트 처리: 큰 데이터를 렌더링할 때는 가상화 기법을 사용하여 성능을 최적화할 수 있습니다.
🎯 예제: 할 일 목록 만들기
이제 할 일 목록을 구현해 보겠습니다. 사용자가 할 일을 입력하고 추가할 수 있는 간단한 애플리케이션을 만들겠습니다.
import { useState } from 'react';
function TodoApp() {
const [todos, setTodos] = useState([]);
const [input, setInput] = useState('');
const handleInputChange = (e) => {
setInput(e.target.value);
};
const addTodo = () => {
if (input) {
setTodos([...todos, input]);
setInput('');
}
};
return (
<div>
<input
type="text"
value={input}
onChange={handleInputChange}
placeholder="할 일을 입력하세요"
/>
<button onClick={addTodo}>추가</button>
<ul>
{todos.map((todo, index) => (
<li key={index}>{todo}</li>
))}
</ul>
</div>
);
}
💡 요약
map()을 사용하여 배열을 순회하고, JSX로 각 항목을 반환key속성은 각 항목을 고유하게 구별하는 데 사용- 조건부 렌더링을 활용하여 리스트의 상태에 따라 UI를 동적으로 변경 가능
반응형
'Programming' 카테고리의 다른 글
| React useState와 useEffect (55) | 2025.10.24 |
|---|---|
| React 조건부 렌더링 (Conditional Rendering) (67) | 2025.10.23 |
| React 이벤트 처리 (Event Handling) (47) | 2025.10.21 |
| React Props와 State (73) | 2025.10.20 |
| React 컴포넌트 생성과 구조 (64) | 2025.10.19 |