1. react - virtualized 라이브러리란?
windowing 라이브러리! windoing이란? 주어진 시간에 목록의 부분 목록만 렌더링하며 컴포넌트를 다시 렌더링하는 데 걸리는 시간을 줄이는 기법! 예를 들어 설명하면, 데이터각 100개가 있다면, 한 화면에 100개가 다 보이지는 않을 것이다. 그렇다면, 이 100개를 모두 렌더링할 필요가 있을까? 당연히 No 다. 그렇다면 지금 당장 사용자에게 보여져야 하는 부분만 렌더링을 함으로써 시간을 단축시킬 수 있고, 이것을 가능케 하는 것이 react-virtualized 이다.
2. 어떻게 사용하는데?
1. 먼저 리스트의 아이템 하나하나를 렌더링해주는 함수를 다시 짜야 한다.
//책 '리액트를 다루는 기술' 속 코드를 참고하였습니다.
const rowRender = useCallback(
({index, key, style}) => {
const todo = todos[index];
return (
<TodoListItem
todo = {todo}
key = {key}
onRemove = {onRemove}
onToggle = {onToggle}
style = {style}
/>
);
},
[onRemove, onToggle, todos],
);
2. List 컴포넌트의 props 에 이 rowRender 함수와 전체 크기와 높이, 항목의 개수, 항목의 높이, 배열을 넣어둔다. 그럼 List 컴포넌트가 알아서 최적화를 해준다! (넘넘 간단)
import {List} from 'react-virtualized';
const TodoList = ({todos, onRemove, onToggle}) => {
...
return (
<List
className = "TodoList"
width = {전체 크기}
height = {전체 높이}
rowCount = {todos.length} //항목 개수
rowHeight = {항목 높이}
rowRender = {rowRender}
list = {todos}
/>
);
};
export default React.memo(TodoList);
3. 언제, 왜 써야 하는데?
List 로 불러와야 하는 아이템의 수가 많으면 많을수록 이 라이브러리는 진가를 발휘한다! Profiler 를 이용해 직접 성능 테스트를 해 보면 왜 써야 하는지를 알 수 있다 :)
'꼬리에 꼬리를 무는 코딩' 카테고리의 다른 글
2022.10.02 꼬꼬코 immer 라이브러리 심화 (0) | 2022.10.03 |
---|---|
2022.10.01 꼬꼬코 immer 라이브러리 (0) | 2022.10.02 |
2022.09.29 꼬꼬코 React.memo 를 사용한 컴포넌트 성능 최적화 (1) | 2022.09.29 |
2022.09.28 꼬꼬코 전개 연산자(...문법)와 얕은 복사(shallow copy) (0) | 2022.09.28 |
2022.09.27 꼬꼬코란 무엇인가? + C언어 Int 배열의 초기화와 메모리 할당 (0) | 2022.09.27 |
댓글