小编yog*_*omo的帖子

React Native FlatList onViewableItemsChanged 返回不正确的项目集

我正在尝试使用onViewableItemsChanged事件来检测当前显示在屏幕上的 FlatList 的项目。

在我的 ViewabilityConfig (下面提供了代码)中,我将itemVisiblePercentThreshold参数设置为 100,我认为这将要求我的项目完全显示才能被视为可查看。但对我来说情况并非如此。

正如您在下面的屏幕截图中看到的: 我的应用程序的屏幕截图

很明显,最上面的项目没有完全显示在屏幕上(这应该使可见项目仅包含 3 个项目)。但是,当我在onViewableItemsChanged事件处理程序中打印数组的长度时,它返回 4(当我检查值时,包括最上面的项目)。

可查看项目数组长度的日志结果

这是 FlatList onViewableItemsChanged事件的问题吗?或者我实施得不正确?

我试图从文档和 React-native github 中找到解决方案,但没有关于此事件如何工作的进一步解释。


我的代码的一些相关片段如下:

平面列表定义

<FlatList
                    viewabilityConfig={this.clippingListViewabilityConfig}
                    inverted={true}
                    horizontal={false}
                    data = {this.props.clippingResultArray}
                    ref={(ref) => this.clippingResultFlatList = ref}
                    style={{
                        // flexGrow:0,
                        // backgroundColor: 'green',
                        // width:'100%',

                        // width: Dimensions.get('window').width,
                    }}
                    contentContainerStyle={{
                        // justifyContent:'flex-end',
                        // flexGrow:0,
                        // flexDirection:'row',
                        // alignItems:'flex-end',
                    }}
                    renderItem={this.renderClippingListItemRight}
                    keyExtractor={(item, index) => index.toString()}
                    onViewableItemsChanged={this.onClippingListViewableChanged}
                    // removeClippedSubviews={true}

                    {...this._clippingListItemPanResponder.panHandlers}
                />
Run Code Online (Sandbox Code Playgroud)

onViewableItemsChanged 侦听器

onClippingListViewableChanged = …
Run Code Online (Sandbox Code Playgroud)

react-native react-android react-native-flatlist

9
推荐指数
0
解决办法
2562
查看次数