Summary: We had rendering support for prev links, but we never had any previous links in our metadata. Only next links. This adds that support to both Guides and APIs. **For guides**: `previous` is manually inserted into the metadata of the actual markdown file. **For APIs/Components**: `previous` is established via code within `extractDocs.js` > This isn't totally perfect. For example, the transition from the last guide to the first API/component has a next link from the guide, but not a previous link from the API since the way you get the previous links are different from guides and APIs. But this gets us really close. Closes https://github.com/facebook/react-native/pull/8754 Differential Revision: D3557972 Pulled By: hramos fbshipit-source-id: e270bb51e7a4f59f61dad28ae0928d27d0af3d4a
2.2 KiB
id | title | layout | category | permalink | next | previous |
---|---|---|---|---|---|---|
using-a-listview | Using a ListView | docs | The Basics | docs/using-a-listview.html | network | using-a-scrollview |
The ListView
component displays a vertically scrolling list of changing, but similarly structured, data.
ListView
works well for long lists of data, where the number of items might change over time. Unlike the more generic ScrollView
, the ListView
only renders elements that are currently showing on the screen, not all the elements at once.
The ListView
component requires two props: dataSource
and renderRow
. dataSource
is the source of information for the list. renderRow
takes one item from the source and returns a formatted component to render.
This example creates a simple ListView
of hardcoded data. It first initializes the dataSource
that will be used to populate the ListView
. Each item in the dataSource
is then rendered as a Text
component. Finally it renders the ListView
and all Text
components.
A
rowHasChanged
function is required to useListView
. Here we just say a row has changed if the row we are on is not the same as the previous row.
import React, { Component } from 'react';
import { AppRegistry, ListView, Text, View } from 'react-native';
class ListViewBasics extends Component {
// Initialize the hardcoded data
constructor(props) {
super(props);
const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state = {
dataSource: ds.cloneWithRows([
'John', 'Joel', 'James', 'Jimmy', 'Jackson', 'Jillian', 'Julie', 'Devin'
])
};
}
render() {
return (
<View style={{paddingTop: 22}}>
<ListView
dataSource={this.state.dataSource}
renderRow={(rowData) => <Text>{rowData}</Text>}
/>
</View>
);
}
}
// App registration and rendering
AppRegistry.registerComponent('ListViewBasics', () => ListViewBasics);
One of the most common uses for a ListView
is displaying data that you fetch from a server. To do that, you will need to learn about networking in React Native.