1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
| /** * React Native 提供了几个适用于展示长列表数据的组件,一般而言我们会选用FlatList或是SectionList。
FlatList组件用于显示一个垂直的滚动列表,其中的元素之间结构近似而仅数据不同。
FlatList更适于长列表数据,且元素个数可以增删。和ScrollView不同的是,FlatList并不立即渲染所有元素,而是优先渲染屏幕上可见的元素。
FlatList组件必须的两个属性是data和renderItem。data是列表的数据源,而renderItem则从数据源中逐个解析数据,然后返回一个设定好格式的组件来渲染。
下面的例子创建了一个简单的FlatList,并预设了一些模拟数据。首先是初始化FlatList所需的data,其中的每一项(行)数据之后都在renderItem中被渲染成了Text组件,最后构成整个FlatList。 */ import React, { Component } from 'react'; // 从“react-native” 导入以下这些控件 import { StyleSheet, FlatList, View, Image, SectionList, Text } from 'react-native';
/** * 默认导出的组件 */ export default class DemoBasicFlatListApp extends Component {
render() { return ( <View style={styleS.container}> <BasicFlatlist></BasicFlatlist>
<BasicSectionList></BasicSectionList> </View> ); } }
/** * 基本的长列表数据 */ class BasicFlatlist extends Component { render() { return ( <View style={styleS.flatlistcontainer}> {/* 添加FlatList长列表 */} <FlatList data={[ { key: 'Devin' }, { key: 'Jackson' }, { key: 'James' }, { key: 'Joel' }, { key: 'John' }, { key: 'Jillian' }, { key: 'Jimmy' }, { key: 'Julie' }, ]} renderItem={({ item }) => <Text style={styleS.itemStyle}>{item.key}</Text>} /> </View> ); } }
/** * 基本的长列表数据 */ class BasicSectionList extends Component { render() { return ( <View style={styleS.sectionlistContainer}> {/* 添加需要分组的数据SectionList长列表 */} <SectionList sections={[ { title: 'D', data: ['Devin'] }, { title: 'J', data: ['Jackson', 'James', 'Jillian', 'Jimmy', 'Joel', 'John', 'Julie'] }, { title: 'T', data: ['Devin'] }, ]} renderItem={({ item }) => <Text style={styleS.itemStyle}>{item}</Text>} renderSectionHeader={({section}) => <Text style={styleS.sectionHeader}>{section.title}</Text>} keyExtractor={(item, index) => index} /> </View> ); } }
const styleS = StyleSheet.create({ flatlistcontainer: {
}, sectionlistContainer: {
}, sectionHeader: { paddingTop: 2, paddingLeft: 10, paddingRight: 10, paddingBottom: 2, fontSize: 14, fontWeight: 'bold', backgroundColor: 'rgba(47,247,247,1.0)', }, container: { flex: 1, paddingTop: 22, }, itemStyle: { padding: 10, fontSize: 18, height: 44, }, });
|