reactjs disableIntervalMomentum不适用于平面列表中的IOS设备(React Native)

bnlyeluc  于 2022-12-03  发布在  React
关注(0)|答案(2)|浏览(110)

我正在使用disableIntervalMomentum={true}在下一个索引上停止滑块。它对Android有效,但对IOS来说,在快速滚动时,它不会在下一个索引上停止,而是继续移动。
这是我代码

<FlatList
          ref={flatListRef}
          data={data?.offers || []}
          keyExtractor={(item, index) => index.toString()}
          horizontal={true}
          bounces={(data?.offers || []).length > 1}
          pagingEnabled={true}
          showsHorizontalScrollIndicator={false}
          snapToInterval={!isMultiCard ? snapToInterval : undefined}
          onViewableItemsChanged={onViewRef.current}
          viewabilityConfig={viewConfigRef.current}
          disableIntervalMomentum={true}
decelerationRate={'fast'}
            snapToOffsets={isMultiCard && length > 1 ? snapToOffsets : undefined}
            scrollEnabled={true}
/>

我添加了disableIntervalMomentum={true},但它不适用于IOS。如果需要更多信息,请告诉我。

h5qlskok

h5qlskok1#

因此,我认为snapToOffsets正在产生问题(因为它覆盖了pagingEnabled),所以我删除了它,它工作了。

lbsnaicq

lbsnaicq2#

disableIntervalMomentum属性用于禁用当用户抛出列表时发生的基于动量的滚动。该属性仅在Android上有效,因为基于动量的滚动不是iOS的功能。
要阻止列表滚动到iOS上的下一个索引,您可以尝试使用snapToInterval属性。此属性指定用户释放列表时列表应停止的时间间隔。例如,如果snapToInterval值设置为120,并且用户快速滚动列表并释放它,该列表将在最近的索引处停止,该索引是120的倍数(即,0、120、240等)。
您也可以尝试使用snapToOffsets属性,该属性允许您指定列表应该停止的特定偏移量。如果您希望在特定索引处停止列表,而不是在固定间隔处停止列表,则该属性非常有用。

相关问题