创建FlatList
- 首先,从
LandingScreen.tsx中的’react-native’导入FlatList、View和StyleSheet。
- 将VideoCard组件替换为FlatList组件。
- 添加
horizontal属性以水平显示项目。 - 将
data属性添加到FlatList并将其设置为islandVideos。这是FlatList将呈现的源数据。
- 添加
renderItem属性。它将来自data属性的item(在本例中为单个视频元素)传递给箭头函数,在其中您可以指定要呈现该项目的JSX。 - 将VideoCard组件添加到
renderItem并将其打包在View中。 - 将
key属性添加到VideoCard,FlatList使用它来跟踪项目(密钥必须是唯一的)。您也可以向FlatList添加keyExtractor属性,而不是在VideoCard中指定key。您可以在React Native FlatList文档中了解与此相关的更多信息。 - 将
title、description和imgURL属性添加到VideoCard组件,然后传入item中的相应字段。 - 为
underwaterVideos创建第二个FlatList。 - 向每行添加一个
Text组件以标记类别。
- 刷新应用程序并验证VideoCard是否呈现。
添加样式
我们来添加一些样式,让VideoCard在屏幕上看起来更美观。- 使用LandingScreen箭头函数后,使用名为
flatList、itemContainer和categoryTitle的样式创建StyleSheet。这些样式将为我们的卡片留出一定的间距,并使我们的类别标题看起来更美观一些。
- 现在将
flatList样式添加到FlatList中,将itemContainer样式添加到View,将categoryTitle添加到Text。
将行包装在TVFocusGuideView中
现在,为了确保焦点能在两行之间正确切换,我们可以使用TVFocusGuideView组件。该组件使您的应用能够查找、恢复和记住多次访问的焦点。- Import
TVFocusGuideViewfrom@amazon-devices/react-native-kepler.
- 在TVFocusGuideView中包装FlatList并将autoFocus设置为true,这使得TVFocusGuide能够自动为您管理焦点。
LandingScreen.tsx应该如以下所示:
- 刷新应用,然后从一行导航到另一行。焦点会保留在您导航的项目上,而不是移至新行中的相应项目,注意到了吗?这种行为由TVFocusGuideView组件控制!

由TVFocusGuideView控制的焦点导航

