Skip to main content

Pull To Refresh

Pull to refresh feature is enabled by default, and it will be activated on the top snap point provided. All you need to do is to provide refreshing & onRefresh to any of the Scrollables.

note

Currently refreshControl is not supported, feel free to contribute to enable it ❤️

Example

Here is an example of a simple pull to refresh:

import React, { useCallback, useMemo } from "react";
import { StyleSheet, View, Text } from "react-native";
import BottomSheet, { BottomSheetFlatList } from "@gorhom/bottom-sheet";

const App = () => {
// variables
const data = useMemo(
() =>
Array(50)
.fill(0)
.map((_, index) => `index-${index}`),
[]
);
const snapPoints = useMemo(() => ["25%", "50%"], []);

// callbacks
const handleRefresh = useCallback(() => {
console.log("handleRefresh");
}, []);

// render
const renderItem = useCallback(
({ item }) => (
<View style={styles.itemContainer}>
<Text>{item}</Text>
</View>
),
[]
);
return (
<View style={styles.container}>
<BottomSheet snapPoints={snapPoints}>
<BottomSheetFlatList
data={data}
keyExtractor={(i) => i}
renderItem={renderItem}
contentContainerStyle={styles.contentContainer}
refreshing={false}
onRefresh={handleRefresh}
/>
</BottomSheet>
</View>
);
};

const styles = StyleSheet.create({
container: {
flex: 1,
},
contentContainer: {
backgroundColor: "white",
},
itemContainer: {
padding: 6,
margin: 6,
backgroundColor: "#eee",
},
});

export default App;