Using List Views
Using List Views
React Native提供了一套用于呈现数据列表的组件。一般来说,你会想要使用FlatList或SectionList。
该FlatList
组件显示一个不断变化但具有相似结构的数据的滚动列表。FlatList
对于长时间的数据列表来说效果很好,这些数据的数量可能会随着时间而改变。不像更通用的ScrollView
,FlatList
只能渲染当前在屏幕上显示的元素,而不是一次显示所有元素。
该FlatList
组件需要两个道具:data
和renderItem
。data
是列表的信息来源。renderItem
从源获取一个项目并返回一个格式化的组件进行渲染。
这个例子创建了一个简单FlatList
的硬编码数据。data
道具中的每个项目都被渲染为一个Text
组件。该FlatListBasics
组件然后呈现FlatList
所有Text
组件。
import React, { Component } from 'react';
import { AppRegistry, FlatList, StyleSheet, Text, View } from 'react-native';
export default class FlatListBasics extends Component {
render() {
return (
<View style={styles.container}>
<FlatList
data={[
{key: 'Devin'},
{key: 'Jackson'},
{key: 'James'},
{key: 'Joel'},
{key: 'John'},
{key: 'Jillian'},
{key: 'Jimmy'},
{key: 'Julie'},
]}
renderItem={{item}) => <Text style={styles.item}>{item.key}</Text>}
/>
</View>
}
}
const styles = StyleSheet.create{
container: {
flex: 1,
paddingTop: 22
},
item: {
padding: 10,
fontSize: 18,
height: 44,
},
})
// skip this line if using Create React Native App
AppRegistry.registerComponent('AwesomeProject', () => FlatListBasics
如果要将一组数据呈现为逻辑部分,也许使用部分标题(类似于UITableView
iOS 上的s),则需要使用SectionList。
import React, { Component } from 'react';
import { AppRegistry, SectionList, StyleSheet, Text, View } from 'react-native';
export default class SectionListBasics extends Component {
render() {
return (
<View style={styles.container}>
<SectionList
sections={[
{title: 'D', data: ['Devin']},
{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>}
/>
</View>
}
}
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,
},
})
// skip this line if using Create React Native App
AppRegistry.registerComponent('AwesomeProject', () => SectionListBasics
列表视图最常见的用途之一是显示从服务器获取的数据。为此,您需要了解React Native中的网络。