27 KiB
id, title, original_id
| id | title | original_id |
|---|---|---|
| version-0.40-refreshcontrol | refreshcontrol | refreshcontrol |
RefreshControl #
This component is used inside a ScrollView or ListView to add pull to refresh
functionality. When the ScrollView is at scrollY: 0, swiping down
triggers an onRefresh event.
Usage example #
_onRefresh() { this.setState({refreshing: true}); fetchData().then(() => { this.setState({refreshing: false}); }); }
render() { return ( <ListView refreshControl={ <RefreshControl refreshing={this.state.refreshing} onRefresh={this._onRefresh.bind(this)} /> } ... > ... </ListView> ); } ... }
Note: refreshing is a controlled prop, this is why it needs to be set to true
in the onRefresh function otherwise the refresh indicator will stop immediately.
Props #
onRefresh function #
Called when the view starts refreshing.
refreshing bool #
Whether the view should be indicating an active refresh.
androidenabled bool #
Whether the pull to refresh functionality is enabled.
androidprogressViewOffset number #
Progress view top offset
androidsize enum(RefreshLayoutConsts.SIZE.DEFAULT, RefreshLayoutConsts.SIZE.LARGE) #
Size of the refresh indicator, see RefreshControl.SIZE.
iostitle string #
The title displayed under the refresh indicator.
You can edit the content above on GitHub and send us a pull request!
Examples # | Edit on GitHub |
const React = require('react'); const ReactNative = require('react-native'); const { ScrollView, StyleSheet, RefreshControl, Text, TouchableWithoutFeedback, View, } = ReactNative;
const styles = StyleSheet.create({ row: { borderColor: 'grey', borderWidth: 1, padding: 20, backgroundColor: '#3a5795', margin: 5, }, text: { alignSelf: 'center', color: '#fff', }, scrollview: { flex: 1, }, });
class Row extends React.Component { _onClick = () => { this.props.onClick(this.props.data); };
render() { return ( <TouchableWithoutFeedback onPress={this._onClick} > <View style={styles.row}> <Text style={styles.text}> {this.props.data.text + ' (' + this.props.data.clicks + ' clicks)'} </Text> </View> </TouchableWithoutFeedback> ); } }
class RefreshControlExample extends React.Component { static title = '<RefreshControl>'; static description = 'Adds pull-to-refresh support to a scrollview.';
state = { isRefreshing: false, loaded: 0, rowData: Array.from(new Array(20)).map( (val, i) => ({text: 'Initial row ' + i, clicks: 0})), };
_onClick = (row) => { row.clicks++; this.setState({ rowData: this.state.rowData, }); };
render() { const rows = this.state.rowData.map((row, ii) => { return <Row key={ii} data={row} onClick={this._onClick}/>; }); return ( <ScrollView style={styles.scrollview} refreshControl={ <RefreshControl refreshing={this.state.isRefreshing} onRefresh={this._onRefresh} tintColor="#ff0000" title="Loading..." titleColor="#00ff00" colors={['#ff0000', '#00ff00', '#0000ff']} progressBackgroundColor="#ffff00" /> }> {rows} </ScrollView> ); }
_onRefresh = () => { this.setState({isRefreshing: true}); setTimeout(() => { // prepend 10 items const rowData = Array.from(new Array(10)) .map((val, i) => ({ text: 'Loaded row ' + (+this.state.loaded + i), clicks: 0, })) .concat(this.state.rowData);
<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setState<span class="token punctuation">(</span></span><span class="token punctuation">{</span>
loaded<span class="token punctuation">:</span> <span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>loaded <span class="token operator">+</span> <span class="token number">10</span><span class="token punctuation">,</span>
isRefreshing<span class="token punctuation">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
rowData<span class="token punctuation">:</span> rowData<span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">5000</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
}; }
module.exports = RefreshControlExample;
