@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ライブラリの依存関係を追加します。該当するReact Nativeバージョンのタブを選択してください。
- React Native 0.72
- React Native 0.83
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のドキュメント(英語のみ)を参照してください。

