@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库依赖项。 -
使用
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文档(仅提供英文版)。

