신기한 점
: 객체에 style을 따로 안 넣고 바로 logo라는 변수 안에 uri, width, height를 넣으면 알아서 스타일이 들어간다
ScrollViews
스크린에 맞지 않을 정도로 많은 아이템들이 있으면 FlatList를 사용한다
: 비슷한 구조를 가지고 있지만 계속 변하는 긴 리스트 스크롤 하고 싶을 때 사용하기 좋다
: ScrollView와 달리 현재 화면에 보여지는 요소들만 렌더링한다
그러므로 화면에 보이지 않는 요소들이 많은 경우에는 FlatList 사용하기
필수 props
import React from 'react';
import { FlatList, StyleSheet, Text, View } from 'react-native';
const styles = StyleSheet.create({
container: {
flex: 1,
paddingTop: 22
},
item: {
padding: 10,
fontSize: 18,
height: 44,
},
});
const FlatListBasics = () => {
return (
<View style={styles.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}) => <Text style={styles.item}>{item.key}</Text>}
//1. data 속성에 넘겨주는 값의 요소 하나하나는 Text Component로 렌더링된다
item : data에 들어오는 요소 하나하나 (화살표 함수와 다르게 {}이 필요??)
2. FlatListBasics : FlatList와 모든 Text 컴포넌트들을 렌더링한다
/>
</View>
);
}
export default FlatListBasics;
import React from 'react';
import { SectionList, StyleSheet, Text, View } from 'react-native';
const styles = StyleSheet.create({
container: {
flex: 1,
paddingTop: 22
},
sectionHeader: {
paddingTop: 2,
paddingLeft: 10,
paddingRight: 10,
paddingBottom: 2,
fontSize: 14,
fontWeight: 'bold',
backgroundColor: 'rgba(247,247,247,1.0)',
},
item: {
padding: 10,
fontSize: 18,
height: 44,
},
})
const SectionListBasics = () => {
return (
<View style={styles.container}>
<SectionList
sections={[
{title: 'D', data: ['Devin', 'Dan', 'Dominic']},
{title: 'J', data: ['Jackson', 'James', 'Jillian', 'Jimmy', 'Joel', 'John', 'Julie']},
]}
renderItem={({item}) => <Text style={styles.item}>{item}</Text>}
renderSectionHeader={({section}) => <Text style={styles.sectionHeader}>{section.title}</Text>}
keyExtractor={(item, index) => `basicListEntry-${item.title}`}
/>
</View>
);
}
export default SectionListBasics;