VirtualizedList:您有一个更新缓慢的大列表 - React Native FlatList

Posted

技术标签:

【中文标题】VirtualizedList:您有一个更新缓慢的大列表 - React Native FlatList【英文标题】:VirtualizedList: You have a large list that is slow to update - React Native FlatList 【发布时间】:2021-12-06 01:51:03 【问题描述】:

我对接收不超过 10 个项目的 FlatList 有疑问。

这是 FlatList 的代码:

<FlatList
    style=styles.flatList
    onScroll=(event) => toggleHeader(event.nativeEvent.contentOffset.y > headerHeight)
    contentContainerStyle= paddingBottom: getContentContainerStyle() 
    showsVerticalScrollIndicator=false
    onRefresh=makeRequest
    refreshing=isRefreshing
    data=data
    renderItem=renderItem
    keyExtractor=item => item?.id?.toString()
/>

应用程序中的流程如下:

应用程序正在使用标签栏导航,并且使用单个组件向每个标签发出具有特定 ID 的请求,以从 DB 获取正确的数据。

我的 renderItem 方法是一长串 if elses 来检查项目类型以知道要渲染,因为可以有多种类型的项目,但它们的数量真的很小(最多10-15)。有些项目是horizo​​ntal FlatLists,但其中的项目数量也像 2-4。

多次更改选项卡后,会抛出此 VirtualizedList 警告,但我的项目以正确的数量和顺序正确显示。

我正在使用功能组件和钩子。

尝试添加maxToRenderPerBatchinitialNumToRender 但不起作用。

我不想在 PureComponent 中更改我的 renderItem,因为我的列表总是会有一些项目,所以我试图了解它为什么会引发此警告。

编辑

此问题仅在 ios 上发生。

【问题讨论】:

【参考方案1】:

在您的情况下添加您所有的孩子 Scrollview FlatList

&lt;FlatList nestedScrollEnabled=true/&gt;

【讨论】:

我尝试将此属性添加到我的所有 FlatLists 上,这些 FlatLists 以某种方式嵌套在我的大 FlatList 和大 FlatList 中,但仍在 iOS 上,谢谢您的时间

以上是关于VirtualizedList:您有一个更新缓慢的大列表 - React Native FlatList的主要内容,如果未能解决你的问题,请参考以下文章

不变违规:一个 VirtualizedList 包含一个单元格,该单元格本身包含多个 VirtualizedList

React-Native 另一个 VirtualizedList 支持的容器

滚动列表时反应本机 VirtualizedList 重新渲染

使 VirtualizedList 显示为 Grid

缓慢更新声明

React Native之FlatList组件(一)