mirror of
https://github.com/status-im/react-native.git
synced 2025-01-14 19:44:13 +00:00
f42f2dff37
Summary: Finally, a place where `Button` is properly introduced. This is based on the old Handling Touches guide, which has been simplified (with some content moved over to the scroll views tutorial). I've also updated the ordering of the guides into something that makes more sense to someone just getting started with React Native. Closes https://github.com/facebook/react-native/pull/14371 Differential Revision: D5201127 Pulled By: hramos fbshipit-source-id: 819192e2db9febb8a315f51693dae557752b6002
110 lines
3.6 KiB
Markdown
110 lines
3.6 KiB
Markdown
---
|
|
id: using-a-listview
|
|
title: Using List Views
|
|
layout: docs
|
|
category: The Basics
|
|
permalink: docs/using-a-listview.html
|
|
next: network
|
|
previous: using-a-scrollview
|
|
---
|
|
|
|
React Native provides a suite of components for presenting lists of data. Generally, you'll want to use either [FlatList](docs/flatlist.html) or [SectionList](docs/sectionlist.html).
|
|
|
|
The `FlatList` component displays a scrolling list of changing, but similarly structured, data. `FlatList` works well for long lists of data, where the number of items might change over time. Unlike the more generic [`ScrollView`](docs/using-a-scrollview.html), the `FlatList` only renders elements that are currently showing on the screen, not all the elements at once.
|
|
|
|
The `FlatList` component requires two props: `data` and `renderItem`. `data` is the source of information for the list. `renderItem` takes one item from the source and returns a formatted component to render.
|
|
|
|
This example creates a simple `FlatList` of hardcoded data. Each item in the `data` props is rendered as a `Text` component. The `FlatListBasics` component then renders the `FlatList` and all `Text` components.
|
|
|
|
```SnackPlayer?name=FlatList%20Basics
|
|
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);
|
|
```
|
|
|
|
If you want to render a set of data broken into logical sections, maybe with section headers, similar to `UITableView`s on iOS, then a [SectionList](docs/sectionlist.html) is the way to go.
|
|
|
|
```SnackPlayer?name=SectionList%20Basics
|
|
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);
|
|
```
|
|
|
|
One of the most common uses for a list view is displaying data that you fetch from a server. To do that, you will need to [learn about networking in React Native](docs/network.html).
|