Android 上的 FlatList 在 BottomSheet 中不工作
FlatList not working inside BottomSheet on Android
我正在使用gorhom/react-native-bottom-sheet
我面临的问题:
我在 BottomSheet
中有一个 FlatList
,我可以在 ios 上滚动 FlaLlist
,但它无法在 android 上工作。
经过大量研究,我能够通过使用 BottomSheetFlatList
而不是同一包中的 FlatList
来解决问题。
import { BottomSheetFlatList } from "@gorhom/bottom-sheet";
<BottomSheetFlatList
ref={ref}
initialNumToRender={3}
keyExtractor={(item) => item?.id}
showsVerticalScrollIndicator={false}
maxToRenderPerBatch={3}
windowSize={7}
data={dat}
renderItem={renderItem}
/>
通过这样做,它也开始在 android 上正常工作。
但因为我也希望我的 Flatlist
能够 auto-scroll 在特定事件上使用 ref。
经过一些研究和 @gorhom/bottom-sheet
的大量文档。我在文档的故障排除部分找到了解决方案。
但作为开发人员,Whosebug
是我们每个问题的第一个 go-to 位置。所以,我决定post这里的答案。
回答
由于使用 TapGestureHandler 和 PanGestureHandler 包装内容和句柄,任何手势交互都不会按预期运行。
要解决此问题,请使用 react-native-gesture-handler 提供的 ScrollView 和 FlatList,而不是 react-native。
import {
ScrollView,
FlatList
} from 'react-native-gesture-handler';
在这里找到原始答案-
https://gorhom.github.io/react-native-bottom-sheet/troubleshooting
使用raw-bottom-sheet raw-bottom-sheet并将“dragFromTopOnly”设置为true,可以执行任何触摸操作我会提到
下面的示例:
<RBSheet
ref={refRBSheet}
dragFromTopOnly={true}
customStyles={{
wrapper: {
backgroundColor: "transparent"
},
draggableIcon: {
backgroundColor: "#000"
}
}}
>`
我正在使用gorhom/react-native-bottom-sheet
我面临的问题:
我在 BottomSheet
中有一个 FlatList
,我可以在 ios 上滚动 FlaLlist
,但它无法在 android 上工作。
经过大量研究,我能够通过使用 BottomSheetFlatList
而不是同一包中的 FlatList
来解决问题。
import { BottomSheetFlatList } from "@gorhom/bottom-sheet";
<BottomSheetFlatList
ref={ref}
initialNumToRender={3}
keyExtractor={(item) => item?.id}
showsVerticalScrollIndicator={false}
maxToRenderPerBatch={3}
windowSize={7}
data={dat}
renderItem={renderItem}
/>
通过这样做,它也开始在 android 上正常工作。
但因为我也希望我的 Flatlist
能够 auto-scroll 在特定事件上使用 ref。
经过一些研究和 @gorhom/bottom-sheet
的大量文档。我在文档的故障排除部分找到了解决方案。
但作为开发人员,Whosebug
是我们每个问题的第一个 go-to 位置。所以,我决定post这里的答案。
回答
由于使用 TapGestureHandler 和 PanGestureHandler 包装内容和句柄,任何手势交互都不会按预期运行。
要解决此问题,请使用 react-native-gesture-handler 提供的 ScrollView 和 FlatList,而不是 react-native。
import {
ScrollView,
FlatList
} from 'react-native-gesture-handler';
在这里找到原始答案- https://gorhom.github.io/react-native-bottom-sheet/troubleshooting
使用raw-bottom-sheet raw-bottom-sheet并将“dragFromTopOnly”设置为true,可以执行任何触摸操作我会提到 下面的示例:
<RBSheet
ref={refRBSheet}
dragFromTopOnly={true}
customStyles={{
wrapper: {
backgroundColor: "transparent"
},
draggableIcon: {
backgroundColor: "#000"
}
}}
>`