@amazon-devices/shopify__flash-listは、高速でパフォーマンスに優れたリストコンポーネントを提供します。FlashListは、React Nativeから提供されているFlatListに似ています。FlatListでサポートされるプロパティは、FlashListでもサポートされます。FlashListは、FlatListコンポーネントを置き換えてestimatedItemSizeプロパティを追加するだけで試すことができます。また、FlashListでは、サポートされるプロパティのリストが拡張され、最適なパフォーマンスの実現に役立つプロパティが追加されています。
このライブラリはシステムにデプロイされるため、別途インストールプロセスを必要とすることなくVega向けReact Nativeアプリで利用できます。これは、アプリが実行時にリンクする自動リンクライブラリとしてデプロイされます。ライブラリと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は、FlatListと同様に内部でScrollViewを使用しているため、そのプロパティを継承しています。
既知の問題と制限事項
React NativeのFlatListでサポートされているプロパティのすべてに、FlashListで同等のプロパティがあるとは限りません。FlashListでサポートされていないReact Nativeのプロパティについては、以下の一覧を参照してください。
- サポートされていないプロパティ
columnWrapperStyledebuglistKeyonScrollToIndexFailedwindowSize
- サポートされていないメソッド
flashScrollIndicators()hasMoregetChildContextgetNativeScrollRef()getScrollRefgetScrollResponder()
- 基盤となる実装の違いにより、
FlashListに移植しても意味のないプロパティdisableVirtualizationgetItemLayoutinitialNumToRendermaxToRenderPerBatchrecordInteractionsetNativePropsupdateCellsBatchingPeriod
- Vegaで現在サポートされていないプロパティ
refreshControlrefreshing
ItemItemSeparatorComponentを使用する場合、スクロール時にJSスレッドで問題が発生することがあります。
keyプロパティの使用
React NativeのFlatListからFlashlistに移行する場合は、アイテムコンポーネントとその入れ子のコンポーネントからkeyプロパティをすべて削除する必要があります。keyプロパティを使用すると、FlashListでビューをリサイクルできなくなり、Flashlistのパフォーマンス最適化の効果が失われます。
たとえば、次のコードスニペットでは、TextコンポーネントとViewコンポーネントでkeyプロパティが使用されています。
Flashlistを最適化するには、次次の例のようにkeyプロパティを削除します。
keyプロパティの詳細については、Shopifyのドキュメント(英語のみ)を参照してください。

