devlog_zz

React Native FlatList 본문

Front End/React Native

React Native FlatList

YJ_SW 2021. 1. 18. 14:57
728x90

React Native FlatList

  • 자동으로 스크롤 생김
  • scroll view 와 동일하게 동작
  • 성능은 FlatList가 더 좋음
  • 코드도 더 짧음
<FlatList
        data={people}
        renderItem={({ item })=>(
          <Text style={styles.item}>{item.name}</Text>
        )}
      />

 

scrollView와 비교

<ScrollView>
        {people.map((item)=>{
          return (
              <View key={item.key}>
                <Text style={styles.item}>{item.name}</Text>
              </View>
          )
        })}
     </ScrollView>

 

keyExtractor

flatList data 가 key 가 이와 같이 정의되어 있다면 그냥 사용해도 무관

const [people, setPeople] = useState([
    {name:'aaa',key:'1'},
    {name:'bbb',key:'2'},
    {name:'ccc',key:'3'},
    {name:'ddd',key:'4'},
    {name:'eee',key:'5'},
    {name:'fff',key:'6'},
    {name:'ggg',key:'7'},
  ])

하지만

const [people, setPeople] = useState([
    {name:'aaa',id:'1'},
    {name:'bbb',id:'2'},
    {name:'ccc',id:'3'},
    {name:'ddd',id:'4'},
    {name:'eee',id:'5'},
    {name:'fff',id:'6'},
    {name:'ggg',id:'7'},
  ])

id로 정의되어 있다면 오류 발생

이를 해결하기 위해서는

<FlatList
		keyExtractor={(item) => item.id}
        data={people}
        renderItem={({ item })=>(
          <Text style={styles.item}>{item.name}</Text>
        )}
      />

 

numColumns 

 <FlatList
        numColumns = {2}
        keyExtractor ={(item)=> item.id}
        data={people}
        renderItem={({ item })=>(
          <Text style={styles.item}>{item.name}</Text>
        )}
      />

 

728x90

'Front End > React Native' 카테고리의 다른 글

props 전달 받는 방법2가지  (0) 2021.01.18
React Native TouchableOpacity  (0) 2021.01.18
React Native ScrollView  (0) 2021.01.18
React Native useState , TextInput  (0) 2021.01.18
Button  (0) 2021.01.18
Comments