website/versioned_docs/version-0.83/refreshcontrol.md
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.
import React from 'react';
import {RefreshControl, ScrollView, StyleSheet, Text} from 'react-native';
import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context';
const App = () => {
const [refreshing, setRefreshing] = React.useState(false);
const onRefresh = React.useCallback(() => {
setRefreshing(true);
setTimeout(() => {
setRefreshing(false);
}, 2000);
}, []);
return (
<SafeAreaProvider>
<SafeAreaView style={styles.container}>
<ScrollView
contentContainerStyle={styles.scrollView}
refreshControl={
<RefreshControl refreshing={refreshing} onRefresh={onRefresh} />
}>
<Text>Pull down to see RefreshControl indicator</Text>
</ScrollView>
</SafeAreaView>
</SafeAreaProvider>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
},
scrollView: {
flex: 1,
backgroundColor: 'pink',
alignItems: 'center',
justifyContent: 'center',
},
});
export default App;
:::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.
:::
Inherits View Props.
refreshingWhether the view should be indicating an active refresh.
| Type |
|---|
| boolean |
colors <div className="label android">Android</div>The colors (at least one) that will be used to draw the refresh indicator.
| Type |
|---|
| array of colors |
enabled <div className="label android">Android</div>Whether the pull to refresh functionality is enabled.
| Type | Default |
|---|---|
| boolean | true |
onRefreshCalled when the view starts refreshing.
| Type |
|---|
| function |
progressBackgroundColor <div className="label android">Android</div>The background color of the refresh indicator.
| Type |
|---|
| color |
progressViewOffsetProgress view top offset.
| Type | Default |
|---|---|
| number | 0 |
size <div className="label android">Android</div>Size of the refresh indicator.
| Type | Default |
|---|---|
enum('default', 'large') | 'default' |
tintColor <div className="label ios">iOS</div>The color of the refresh indicator.
| Type |
|---|
| color |
title <div className="label ios">iOS</div>The title displayed under the refresh indicator.
| Type |
|---|
| string |
titleColor <div className="label ios">iOS</div>The color of the refresh indicator title.
| Type |
|---|
| color |