@amazon-devices/shopify__flash-list库提供一个高速度、高性能的列表组件。FlashList和React Native提供的FlatList类似。FlatList所支持的属性,FlashList也支持。您可以通过替换FlatList组件并添加estimatedItemSize属性来尝试FlashList。此外,FlashList通过添加其他属性来扩展支持的属性的列表,以帮助实现最佳性能。
此库由系统部署,可供适用于Vega的React Native应用使用,无需单独的安装过程。此库自动链接,您的应用在运行时会链接到该库。该库保证仅与为之构建的适用于Vega的React Native版本兼容。
升级应用的适用于Vega的React Native版本时,可以考虑升级其库依赖关系的最佳实践。
安装
-
在
package.json文件中添加JavaScript库依赖项。 -
使用
npm install命令重新安装依赖项。
示例
以下示例使用常用数据集和组件。为了避免示例中的重复,已删除一些项目。FlashList组件示例
带有无限滚动功能的FlashList示例
MasonryFlashList示例
MasonryFlashList是包含许多列的FlashList组件。
API参考
请查看文档页面,了解有关此库和API参考的信息。FlashList库涵盖了FlatList组件支持的所有属性。它如下文所列,增加了用于优化性能的额外属性。
组件
属性
FlashList在后台使用ScrollView,这和FlatList一样,因此继承了其属性。
已知问题和限制
并非React NativeFlatList中支持的所有属性都在FlashList中有等效属性。FlashList不支持以下React Native属性。
- 不支持的属性:
columnWrapperStyledebuglistKeyonScrollToIndexFailedwindowSize
- 不支持的方法:
flashScrollIndicators()hasMoregetChildContextgetNativeScrollRef()getScrollRefgetScrollResponder()
- 由于底层实现的差异,在移植到
FlashList时不会有任何作用的属性:disableVirtualizationgetItemLayoutinitialNumToRendermaxToRenderPerBatchrecordInteractionsetNativePropsupdateCellsBatchingPeriod
- Vega目前不支持的属性:
refreshControlrefreshing
ItemItemSeparatorComponent时,在基于Perfetto轨迹进行滚动时,JS线程可能会出现问题。
key属性的使用
如果您使用key属性,FlashList无法再循环视图,这会移除Flashlist的性能优化。因此,从React Native FlatList迁移到Flashlist时,您应该从项目组件及其嵌套组件中移除所有key属性。
例如,下面的代码片段在Text和View组件中使用了key属性。
Flashlist,请移除key属性,如下所示。
key属性的更多详细信息,请参阅Shopify文档(仅提供英文版)。

