react-native - Flatlist 每次滑动手势最多滚动一项
问题描述
我有 FlatList 元素:
<FlatList
ref={listRef}
data={data}
onLayout={_onLayoutDimensionsChanged}
keyExtractor={_keyExtractor}
renderItem={_renderItem}
initialScrollIndex={initialScrollIndex}
onViewableItemsChanged={onViewableItemsChanged}
viewabilityConfig={{ itemVisiblePercentThreshold: 50 }}
ItemSeparatorComponent={ItemSeparator}
snapToInterval={totalItemWidth}
decelerationRate={0.0}
getItemLayout={(data, index) => ({
length: totalItemWidth,
offset: totalItemWidth * index,
index
})}
initialNumToRender={2}
showsHorizontalScrollIndicator={false}
removeClippedSubviews
bounces
horizontal
/>
其中 totalItemWidth 是:
totalItemWidth = itemsWidth + SEPARATOR_SIZE;
我想实现滑动手势将最大移动一个项目,但即使我的列表中设置了减速率,decelerationRate={0.0}
如果我用手指滑动比正常滑动速度快一点,我什至会滑动 2 个项目。
有什么办法可以防止那里的双刷吗?我正在实现图片库,因此当用户一次可以刷两张照片时,它不是很友好。
太感谢了!
解决方案
在您的 FlatList 中使用 disableIntervalMomentum={ true }。这将只允许用户一次水平滚动一页:
<AnimatedFlatList
disableIntervalMomentum={true} // use this
contentInset={{right: wp('20%')}}
showsHorizontalScrollIndicator={false}
ItemSeparatorComponent={separatorComponent}
decelerationRate={0.0}
snapToInterval={ITEM_SIZE}
horizontal={true}
scrollEventThrottle={1}
onScroll={onScrollEvent}
data={filteredData.filteredData}
renderItem={renderItem}
keyExtractor={keyExtractor}
/>
推荐阅读
- amazon-s3 - 无法从 ECS 容器将对象放入 s3
- android - invalidateOptionsMenu()不起作用
- dialogflow-es - Actions on Google - 我的 Alpha 版测试人员无法访问我的操作
- django - 从 django 模型创建数据库视图
- java - 找不到休眠配置的类?
- angular - 可观察的
> vs 可观察的 在剑道 UI 中的角度 - customization - 如何自定义 Wheelnav.js 的吊具(带有 svg)
- python - 如何延迟调用 lambda?
- node.js - 在 Node.js 和 module.export 的类中调用本地方法
- r - 如何仅在特定类型的列上使用 select() 而不会丢失其他类型的列?