我有一个屏幕,其中包含使用平面列表显示的项目列表,平面列表如下:
<FlatList
scrollEnabled
removeClippedSubviews
windowSize={21}
stickySectionHeadersEnabled={false}
showsVerticalScrollIndicator={false}
keyExtractor={keyExtractor}
getItemLayout={getItemLayoutFun}
ListHeaderComponent={listFTUEHeader}
contentContainerStyle={{ flexGrow: 1 }}
data={DISCOVERY_SECTION_LIST}
renderItem={renderItem}
onRefresh={onRefresh}
refreshing={false}
viewabilityConfig={viewabilityConfig}
ListFooterComponent={EndOfListText}
onScroll={onScroll}
/>
我想检测ListHeaderComponent何时在视口外,或者项目[1]何时在屏幕顶部,因此我想添加一个状态。
我已经阅读了文档,但找不到方法,希望能从这里得到任何线索。
任何线索都会有帮助,提前谢谢。
我也处于完全相同的情况,到目前为止,我只能找到一个解决方案来检查视口中是否有特定的项目,而不能检查ListHeaderComponent。
FlatList有一个名为onViewableItemsChanged
的道具,您可以很容易地实现它。滚动平面列表时,平面列表上显示的项目会发生变化。然后,调用此函数,告诉您当前可查看项目是什么以及更改的项目是什么。
另请参阅本文以获得进一步的解释。
也许这有助于你更接近一个适合你的解决方案?!
我也在做这件事,这是迄今为止我发现的最好的选择:
- 获取页眉的高度
- 如果您知道所有屏幕尺寸的高度,请创建一个可重复使用的变量
- 如果没有,请使用
onLayout
道具获取高度
- 使用
onScroll
回调并通过event.nativeEvent.contentOffset.y
获取y offtset
你最终找到了另一个解决方案吗?