Skip to content

Commit 094051f

Browse files
Fix BottomSheet visibility handling with InteractionManager
1 parent 81566cb commit 094051f

1 file changed

Lines changed: 18 additions & 2 deletions

File tree

src/components/BottomSheet.jsx

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import React, { useCallback, useEffect, useMemo, useState } from "react";
2-
import { StyleSheet, FlatList, Keyboard } from "react-native";
2+
import {
3+
StyleSheet,
4+
FlatList,
5+
Keyboard,
6+
InteractionManager,
7+
} from "react-native";
38

49
import PropTypes from "prop-types";
510
import Modal from "react-native-modal";
@@ -176,6 +181,17 @@ export const BottomSheet = ({
176181
...rest
177182
}) => {
178183
const [searchText, setSearchText] = useState("");
184+
const [isReady, setIsReady] = useState(false);
185+
186+
useEffect(() => {
187+
if (isVisible) {
188+
InteractionManager.runAfterInteractions(() => {
189+
setIsReady(true);
190+
});
191+
} else {
192+
setIsReady(false);
193+
}
194+
}, [isVisible]);
179195

180196
const getLabel = useCallback(
181197
(item, index) => item?.label || labelExtractor(item, index) || item,
@@ -214,7 +230,7 @@ export const BottomSheet = ({
214230
avoidKeyboard
215231
hideModalContentWhileAnimating
216232
useNativeDriver
217-
isVisible={isVisible}
233+
isVisible={isVisible && isReady}
218234
style={styles.modalStyle}
219235
onRequestClose={hide}
220236
onBackdropPress={() => {

0 commit comments

Comments
 (0)