**Virtualization(가상화)**은 대량의 UI 요소(리스트, 테이블 등)를 렌더링할 때 필요한 요소만 표시하고 나머지는 제거하는 기법입니다. 이를 통해 DOM 크기를 줄이고, 성능을 최적화할 수 있습니다.
💡 예제 상황 10,000개의 리스트 아이템을 렌더링하는 경우, Virtualization이 없으면 모든 요소가 DOM에 추가되어 성능이 저하 발생
function List({ items }) {
return (
<div>
{items.map((item) => (
<div key={item.id}>{item.text}</div>
))}
</div>
);
}
❗ 모든 아이템을 한 번에 렌더링하므로 메모리 사용량이 증가하고, 성능이 저하됩니다.
import { FixedSizeList as List } from "react-window";
const Row = ({ index, style }) => (
<div style={style}>📌 Item {index}</div>
);
function VirtualizedList() {
return (
<List height={400} itemCount={1000} itemSize={50} width={300}>
{Row}
</List>
);
}
✔️ react-window
를 사용하여 스크롤 영역 내의 요소만 렌더링하여 성능을 최적화됩니다.
라이브러리 | 특징 |
---|---|
react-window | 가볍고 성능이 뛰어난 Virtualization 라이브러리 |
react-virtualized | 테이블, 리스트 등 다양한 UI 가상화 지원 |
TanStack Virtual | 최신 Virtualization 라이브러리로, 유연성이 뛰어남 |