React์์ ์ฌ์ฉํ JavaScript์ map method์ ๋์ผํ ๊ธฐ๋ฅ์ ํ๋ component์ด๋ค
. map method์ ๋ฌ๋ฆฌ ์ ์ฉํ props๋ค์ ์ฌ์ฉํ ์ ์๋ ์ฅ์
์ด ์๊ธฐ ๋๋ฌธ์ React Native์์๋ map ๋์ FlatList component๋ฅผ ์ฌ์ฉ
ํ์ฌ ๊ตฌํํ๋ ๊ฒ์ด ์ข๋ค.
// 1. map method
{data.map(el => {
return (
<OneItem
key={el.id}
content={el.content}
/>
)
})}
// 2. FlatList component
// item์ด๋ผ๋ argument ์ด๋ฆ์ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ฐ๊พธ๋ฉด ์๋๋ค.
// keyExtractor(key)๋ string ํํ์ฌ์ผ ํ๋ค.
<FlatList
data={data}
renderItem={({item}) => {
<OneItem
content={item.content}
/>
}}
keyExtractor={{item=>String(item.id)}
/>
ScrollView
: ํ๋ฉด์ ๋ณด์ฌ์ง๋ ๊ฒ๊ณผ ์๊ด์์ด ScrollView๊ฐ ๊ฐ์ธ๊ณ ์๋ ๋ชจ๋ Component๋ฅผ render
ํ๋ค. FlatList
: ํ๋ฉด์ ๋ณด์ฌ์ง๋ ๋ถ๋ถ๋ง renderํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ
๋ฅผ ์ํด์ ์ฌ์ฉํ๋ค. React์์ ์ฌ์ฉํ JavaScript์ map method๋ฅผ ๋ฐ๋ณตํ์ฌ ์ฌ์ฉํ ๋ฏํ ํจ๊ณผ๋ฅผ ์ฃผ๋ component
์ด๋ค. ํ์ด์ง ๊ตฌ์ฑ์ item ๋ชฉ๋ก๋ค์ ๋ถ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ์ (header - listitem) * n๊ฐ์ ํจ๊ณผ๋ฅผ ์ค ์ ์๋ค.
// section title์ ํด๋นํ๋ ๋ถ๋ถ์ renderSectionHeader์ props์ ์ ๋ฌํ๋ค.
const DATA = [
{
title: "Main",
item: ["Pizza", "Hamburger", "Risotto"]
},
{
title: "Drinks",
item: ["Water", "Coke", "Beer"]
}
]
<SectionList
sections={DATA}
keyExtractor={(item, index) => item + index}
renderItem={({ item }) => <Item title={item} />}
renderSectionHeader={({ section: { title } }) => (
<Text style={styles.header}>{title}</Text>
)}
/>