- .map関数などのJavaScriptロジックを使用してJSXの配列を繰り返し処理し、各アイテムのコンポーネントを作成する。
- 配列オブジェクトを受け取るReact NativeのFlatListコンポーネントを使用する。
FlatListの作成
- まず、FlatList、View、StyleSheetを
LandingScreen.tsxの「react-native」からインポートします。
- VideoCardコンポーネントをFlatListコンポーネントに置き換えます。
- アイテムを水平方向に表示するための
horizontalプロパティを追加します。 - FlatListに
dataプロパティを追加してislandVideosに設定します。これがFlatListでレンダリングされるソースデータです。
renderItemプロパティを追加します。これはdataプロパティのitem(この例では1つのビデオ要素)をアロー関数に渡します。アロー関数では、そのアイテムをレンダリングするJSXを指定します。- VideoCardコンポーネントを
renderItemに追加し、Viewでラップします。 - VideoCardに
keyプロパティを追加します。FlatListがこれを使用してアイテムを追跡します(キーは一意である必要があります)。VideoCardでkeyを指定する代わりに、FlatListにkeyExtractorプロパティを追加することもできます。詳細については、React NativeのFlatListに関するドキュメント(英語のみ)を参照してください。 title、description、imgURLの各プロパティをVideoCardコンポーネントに追加し、itemの対応するフィールドを渡します。underwaterVideos用に2つ目のFlatListを作成してください。- 各行に
Textコンポーネントを追加して、カテゴリにラベルを付けます。
- アプリを更新し、VideoCardがレンダリングされていることを確認します。
スタイルの追加
VideoCardの画面での見栄えをよくするために、スタイルを追加しましょう。- LandingScreenのアロー関数の後に、
flatList、itemContainer、categoryTitleという名前のスタイルを含むStyleSheetを作成します。これらのスタイルはカードにスペースを挿入し、カテゴリタイトルを若干見やすくします。
- 次に、
flatListスタイルをFlatListに追加し、itemContainerスタイルをViewに追加し、categoryTitleをTextに追加します。
TVFocusGuideViewによる行のラッピング
次に、2つの行の間でフォーカスが処理されるようにするために、TVFocusGuideViewコンポーネントを使用します。このコンポーネントにより、アプリは複数回訪問したときのフォーカスを見つけて回復し、記憶することができます。@amazon-devices/react-native-keplerからTVFocusGuideViewをインポートします。
- FlatListをTVFocusGuideViewでラップし、オートフォーカスをtrueに設定すると、TVFocusGuideが自動的にフォーカスを管理できるようになります。
LandingScreen.tsxは次のようになります。
- アプリを更新し、既存の行から別の行に移動します。新しい行の対応する項目に移動するのではなく、移動元の項目にフォーカスが保持されていることに注目してください。この動作はTVFocusGuideViewコンポーネントによって制御されています。

TVFocusGuideViewによるフォーカスナビゲーション

