@amazon-devices/shopify__flash-list提供一个高速度、高性能的列表组件。FlashList和React Native提供的FlatList类似。FlatList所支持的属性,FlashList也支持。您可以通过替换FlatList组件并添加estimatedItemSize属性来尝试FlashList。此外,FlashList通过添加其他属性来扩展支持的属性的列表,以帮助实现最佳性能。
这是一个系统部署的库,可供适用于Vega的React Native应用使用,无需单独的安装过程。它作为自动链接库进行部署,您的应用在运行时会链接到该库。只能在库和为其构建的适用于Vega的React Native版本之间保证兼容性。
在升级构建应用所依据的适用于Vega的React Native版本时,最佳实践是同时升级依赖于适用于Vega的React Native的库的版本。
安装
- 在
package.json文件中添加JavaScript库依赖项。选择适用于您的React Native版本的选项卡。
- React Native 0.72
- React Native 0.83
- 使用
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属性的使用
从React NativeFlatList迁移到Flashlist时,您应该从项目组件及其嵌套组件中移除所有key属性。如果您使用key属性,FlashList无法再循环视图,这会移除Flashlist的性能优化。
例如,下面的代码片段在Text和View组件中使用了key属性。
Flashlist,请移除key属性,如下所示。
key属性的更多详细信息,请参阅Shopify文档(仅提供英文版)。

