
React Native์์ ๋ฆฌ์คํธ ๋ ๋๋ง์
๋ด์ค ํผ๋, ๋ฉ์์ง, ์ํ ๋ชฉ๋ก ๋ฑ
์ฑ์ ๊ฑฐ์ ๋ชจ๋ ์ฃผ์ ๊ธฐ๋ฅ์์ ์ฌ์ฉ๋๋ค.
ํ์ง๋ง ๋ฆฌ์คํธ๊ฐ ๋ง์์ง๊ณ ๋ณต์กํด์ง์๋ก
์คํฌ๋กค์ด ๋๊ธฐ๊ฑฐ๋, ์ด๋ฏธ์ง๊ฐ ๊น๋นก์ด๊ฑฐ๋, ์ฑ์ด ๋๋ ค์ง๋ ํ์์ด ์๊ธด๋ค.
์ด๋ฒ ๊ธ์ ์ค์ ๋ก ์์ฃผ ๊ฒช๋ ๋ฆฌ์คํธ ์ฑ๋ฅ ์ด์์ ํด๊ฒฐ ์ ๋ต์ ์ ๋ฆฌํ ๊ธ์ด๋ค.
| ํญ๋ชฉ | ScrollView | FlatList |
|---|---|---|
| ๋ฐ์ดํฐ ๊ฐ์ | ์ ์ ์ | ๋ง์ ์ |
| ๋ ๋๋ง ๋ฐฉ์ | ์ ์ฒด ๋ ๋๋ง | ํ๋ฉด์ ๋ณด์ด๋ ํญ๋ชฉ๋ง ๋ ๋๋ง |
| ์ฑ๋ฅ | ๋ฎ์ | ๋์ (๊ฐ์ํ) |
๐ง ๋ฆฌ์คํธ์ 10๊ฐ ์ด์ ์์ดํ ์ด ์๋ค๋ฉด ๋ฌด์กฐ๊ฑด FlatList๋ฅผ ์ฐ์!
<FlatList
data={data}
renderItem={({ item }) => <ItemCard item={item} />}
keyExtractor={(item) => item.id.toString()}
initialNumToRender={10}
maxToRenderPerBatch={10}
/>
data: ๋ ๋๋งํ ๋ฐฐ์ด renderItem: ์์ดํ
ํ๋์ฉ ๊ทธ๋ฆฌ๋ ํจ์ keyExtractor: ๊ฐ ์์ดํ
์ ๊ณ ์ key ์ค์ (ํ์!) initialNumToRender: ์ฒ์ ๋ ๋๋งํ ์์ดํ
์ maxToRenderPerBatch: ์ถ๊ฐ ๋ ๋๋งํ ์ต๋ ์| ์ ๋ต | ์ค๋ช |
|---|---|
keyExtractor ์ต์ ํ | ๊ณ ์ ํ string ๋๋ id ๋ฐํ |
shouldComponentUpdate or memo() | ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง ๋ฐฉ์ง |
getItemLayout | ๊ณ ์ ๋์ด์ผ ๊ฒฝ์ฐ ์์น ๊ณ์ฐ ์ต์ ํ |
removeClippedSubviews | ํ๋ฉด ๋ฐ ์ปดํฌ๋ํธ ์ ๊ฑฐ |
windowSize | ๋ ๋๋ง ๋ฒ์ ์กฐ์ (๊ธฐ๋ณธ๊ฐ: 21) |
const ItemCard = React.memo(({ item }) => {
return <Text>{item.name}</Text>;
});
โ
๊ฐ์ ์์ดํ
์ด๋ฉด ๋ค์ ๋ ๋๋งํ์ง ์์
โ
๋ฆฌ์คํธ์ ๋ง์ ์์ดํ
์ด ์์์๋ก ํจ๊ณผ ํผ
<SectionList
sections={[
{ title: '์ค๋', data: todayItems },
{ title: '์ด์ ', data: yesterdayItems },
]}
renderItem={({ item }) => <Text>{item.name}</Text>}
renderSectionHeader={({ section }) => <Text>{section.title}</Text>}
/>
โ
๋ ์ง๋ณ, ์นดํ
๊ณ ๋ฆฌ๋ณ ๋ถ๋ฆฌ
โ
๋ด๋ถ์ ์ผ๋ก๋ FlatList ๊ธฐ๋ฐ์ด๋ฏ๋ก ์ฑ๋ฅ ์ข์
| ์ํฉ | ์ ๋ต |
|---|---|
| ์ด๋ฏธ์ง๊ฐ ๊น๋นก์ธ๋ค | FastImage ์ฌ์ฉ + memo ์ ์ฉ |
| ๋ ๋๋ง์ด ๋๋ฆฌ๋ค | getItemLayout ์ค์ |
| ์คํฌ๋กค์ด ๋ฒ๋ฒ ์ธ๋ค | initialNumToRender, maxToRenderPerBatch ์กฐ์ |
| ๋ฆฌ์คํธ ๋ด๋ถ ์ํ ๊ด๋ฆฌ ์ด๋ ต๋ค | Zustand๋ก ์ํ ๋ถ๋ฆฌ |
์ด๊ธฐ์ ScrollView๋ง ์จ์ ์ํ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์๋๋ฐ,
์คํฌ๋กค์ด ๋๋ฌด ๋ฒ๋ฒ
์ด๊ณ ์ด๋ฏธ์ง๊ฐ ๊ณ์ ๊น๋นก์๋ค.
FlatList๋ก ๋ฐ๊พธ๊ณ , memo + keyExtractor ์ต์ ํ๋ง ํ๋๋ฐ
์ฌ์ฉ์ ๋ฐ์ ์๋, ์คํฌ๋กค ๋ถ๋๋ฌ์์ด ์ฒด๊ฐ๋ ์ ๋๋ก ์ข์์ก๋ค.
์ด์ ๋ ๋ฆฌ์คํธ๊ฐ 10๊ฐ๋ง ๋์ด๊ฐ๋ FlatList + ์ฑ๋ฅ ์ ๋ต์ ๊ธฐ๋ณธ์ผ๋ก ๊น๊ณ ๊ฐ๋ค.
๐ โ์ฑ์ ์ฒด๊ฐ ์ฑ๋ฅ์ ๋ฆฌ์คํธ ๋ ๋๋ง์์ ๊ฐ๋ฆฐ๋ค.โ