๐ย ๋ฐฐ๊ฒฝ
- Windowing์ด๋, ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ ๋๋งํ๊ธฐ ์ํ ๊ธฐ์ ์
๋๋ค. ๋ณด์ด๋ ๋ถ๋ถ๋ง ๋ ๋๋งํ๊ณ ๋๋จธ์ง๋ ํ์ํ ๋ ๋ก๋ํ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. ํนํ
๋ฌดํ ์คํฌ๋กค
์ด๋ ๊ธด ๋ชฉ๋ก์ ๋ค๋ฃฐ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ํ์ ์ผ๋ก react-window์ react-virtualized ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์กด์ฌํ๋๋ฐ, react-window๊ฐ ๋ ๊ฐ๋ฒผ์ด ์ฌ์ด์ฆ๋ฅผ ๊ฐ์ง๊ณ ์์ด, ์ต์ ๊ธฐ๋ฅ๋ง ํ์ํ๋ค๋ฉด react-window๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณต์๋ฌธ์์์๋ ์ถ์ฒํ๊ณ ์์ต๋๋ค.
<aside>
๐
4์ค ์์ฝ
- react-windowing์ ๊ตฌํํ๊ธฐ ์ํด์๋ react-window์ virtualization๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด List์ Gridํํ๋ก ๊ตฌํํ ์ ์์ต๋๋ค.
- AutoSizer์ InfiniteLoader๋ก react-window์ px, ๋ฌดํ์คํฌ๋กค ๋จ์ ์ ๋ณด์ํฉ๋๋ค.
- InfiniteLoader๋ฅผ ์ฌ์ฉํ ๋๋ List์์๋ ์ ์๋ํ์ง๋ง, Grid๋ ์ถ๊ฐ๊ตฌํ์ด ํ์ํฉ๋๋ค.
- windowing, RN์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํด์ฃผ์ง๋ง, ์น์์๋ ์์์ ๊ตฌํํด์ผ ํฉ๋๋ค.
(ํ์ง๋ง, CSS์ content-visibility๊ฐ ์๋ค๊ณ ํฉ๋๋ค!)
</aside>
๐งชย ์ ์ฉํ๊ธฐ
- Listํํ๋ฅผ ๊ตฌํํ ๋๋ FixedSizeList๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- Gridํํ๋ฅผ ๊ตฌํํ ๋๋ FixedSizeGrid๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๊ณต์๋ฌธ์์์ ์ ๊ณตํ๋ ๊ฐ๋จํ ์์์
๋๋ค.
import { FixedSizeList as List } from 'react-window';
import './styles.css';
const Row = ({ index, style }) => (
<div className={index % 2 ? 'ListItemOdd' : 'ListItemEven'} style={style}>
Row {index}
</div>
);
const Example = () => (
<List
className="List"
height={150}
itemCount={1000}
itemSize={35}
width={300}
>
{Row}
</List>
);
๋ ๋๋ง ํ
์คํธ(98% ๊ฐ์ )