Flex를 활용한 화면 구성에 어느정도 익숙해졌다면 데이터를 이용해서 목록을 조회하여 이를 화면에 뿌려보자.
React Native의 List 컨트롤에 대해서 알아보겠다.
- FlatList
React Native 에서 제공하는 Flat List를 이용에 데이터를 바인딩 했을 때 아래와 같이 표현된다.
<FlatList data={[ {key: 'Devin'}, {key: 'Dan'}, {key: 'Dominic'}, {key: 'Jackson'}, {key: 'James'}, {key: 'Joel'}, {key: 'John'}, {key: 'Jillian'}, {key: 'Jimmy'}, {key: 'Julie'}, ]} renderItem={({item}) => <Text style={styles.tab_1_item}>{item.key}</Text>} />
- SectionList
React Native에서 제공하는 Section List를 이용해 데이터를 바이딩 했을 때 아래와 같이 표현할 수 있다.
<SectionList sections={[ {title: 'D', data: ['Devin', 'Dan', 'Dominic']}, {title: 'J', data: ['Jackson', 'James', 'Jillian', 'Jimmy', 'Joel', 'John', 'Julie']}, ]} renderItem={({item}) => <Text style={styles.tab_2_item}>{item}</Text>} renderSectionHeader={({section}) => <Text style={styles.tab_2_sectionHeader}>{section.title}</Text>} keyExtractor={(item, index) => index} />
- List 의 아이템을 사용자의 요구사항에 따라 변경하고 싶을 때,
FlatList나 SectionList 속성의 renderItem을 이용해서 리스트의 아이템에 아이콘을 추가하거나 버튼 외에 화면 이동 등 우리가 원하는 다양한 작업을 진행할 수 있다.
<View style={[styles.tab_1_container]} > <FlatList data={[ {key: 'Devin'}, {key: 'Dan'}, {key: 'Dominic'}, {key: 'Jackson'}, {key: 'James'}, {key: 'Joel'}, {key: 'John'}, {key: 'Jillian'}, {key: 'Jimmy'}, {key: 'Julie'}, ]} renderItem={({item}) => renderItem(item)} /> </View> const renderItem = (item) => { return ( <TouchableOpacity style={{flex:1, flexDirection : "row"}} activeOpacity={0.8} > <View style={{flex:8, padding : 10}} > <Text>{item.key} </Text> </View> <TouchableOpacity style={{flex :2}} > <View style={{flex:2, padding : 10}}> <Image source={require('./icon.png')} style={styles.tab_3_icon} /> </View> </TouchableOpacity> </TouchableOpacity> ) }
그렇다면 Flat List를 Realm의 데이터를 이용해서 조회하고자 할 경우, 아래와 같이 사용할 수 있다.
<View> <TouchableOpacity style={{flex:1, flexDirection : "row"}} activeOpacity={0.8} > <View style={{flex:8, padding : 10}} > <Text>{item.userId} </Text> </View> <TouchableOpacity style={{flex :2}} > <View style={{flex:2, padding : 10}}> <Image source={require('./icon.png')} style={styles.tab_3_icon} /> </View> </TouchableOpacity> </TouchableOpacity> </View> const LineSchema = { name : 'LineUser', properties : { userId : 'string', userPwd : 'string', position : 'string?' } } const realm = new Realm({schema : [ LineSchema ]}); let data = realm.objects("LineUser").map((data, index) => ( data )); return ( <View style={[styles.tab_1_container]} > <FlatList data={data} renderItem={({item}) => renderItem(item)} /> </View> )
기본적인 List를 설정하고, Realm을 이용해서 바인딩하는 방식에 대해서 알아보았다.
'따라해보기' 카테고리의 다른 글
0001 React Native App 개발기 6-2 (0) | 2019.12.13 |
---|---|
0001 React Native App 개발기 6-1 (0) | 2019.12.12 |
0001 React Native App 개발기 4 (0) | 2019.11.22 |
0001 React Native App 개발기 3 (1) | 2019.11.17 |
0001 React Native App 개발기 2 (0) | 2019.11.15 |