如何在不禁用滚动的情况下在 Pressable 内部实现 FlatList?
How to implement a FlatList inside of a Pressable without scrolling getting disabled?
基本上,我希望 FlatList 具有 onPress 功能(简单解释一下)以及默认的滚动功能。现在,如果我在 Pressable 中有一个 FlatList,那么我无法滚动 FlatList。
我也试过将 Pressable 放在 FlatList 的 RenderItem 组件中,但是我有很多项目要显示,所以效率很低。
像下面这样尝试在 FlatList 项目父容器上进行触摸处理,这样滚动问题就不会再出现了,您可以轻松地分别处理每个项目上的触摸
<FlatList
style={{...}}
data={[...]}
keyExtractor={(item, index) => index.toString()}
renderItem={({ item }) => (
<TouchableWithoutFeedback onPress={() => {...}}>
<View>
....
</View>
</TouchableWithoutFeedback>
)}
/>
而不是 Pressable
包装 FlatList
,我了解到我们可以在一个简单的视图上使用 React Native 的 手势响应系统 来获得这样的行为我需要。
<View
onStartShouldSetResponder={() => true}
onResponderRelease={doSomethingFunction}
>
<FlatList
data={someData}
renderItem={renderItemComponent}
/>
</View>
基本上,我希望 FlatList 具有 onPress 功能(简单解释一下)以及默认的滚动功能。现在,如果我在 Pressable 中有一个 FlatList,那么我无法滚动 FlatList。
我也试过将 Pressable 放在 FlatList 的 RenderItem 组件中,但是我有很多项目要显示,所以效率很低。
像下面这样尝试在 FlatList 项目父容器上进行触摸处理,这样滚动问题就不会再出现了,您可以轻松地分别处理每个项目上的触摸
<FlatList
style={{...}}
data={[...]}
keyExtractor={(item, index) => index.toString()}
renderItem={({ item }) => (
<TouchableWithoutFeedback onPress={() => {...}}>
<View>
....
</View>
</TouchableWithoutFeedback>
)}
/>
而不是 Pressable
包装 FlatList
,我了解到我们可以在一个简单的视图上使用 React Native 的 手势响应系统 来获得这样的行为我需要。
<View
onStartShouldSetResponder={() => true}
onResponderRelease={doSomethingFunction}
>
<FlatList
data={someData}
renderItem={renderItemComponent}
/>
</View>