使用不同类型的组件反应本机listview

使用不同类型的组件反应本机listview,listview,gridview,react-native,Listview,Gridview,React Native,我正在开发一个react本机应用程序。在其主页上,我需要显示一些帖子,如视频、音频、图像、博客、文章等。我不知道如何实现这一点。如何使用不同类型的组件、音频、视频和图像的混合制作列表或网格视图。从后端,我们将添加一个图像、视频、音频或博客,并在列表中创建一个新帖子。我还想将新帖子添加到开头,而不是结尾。任何帮助都将不胜感激 您可以使用平面列表来执行此操作。它非常容易使用,性能也很好,React Native推荐它(请看)。 这是一个使用FlatList的简单示例,您可以在单独的组件或函数中处理列

我正在开发一个react本机应用程序。在其主页上,我需要显示一些帖子,如视频、音频、图像、博客、文章等。我不知道如何实现这一点。如何使用不同类型的组件、音频、视频和图像的混合制作列表或网格视图。从后端,我们将添加一个图像、视频、音频或博客,并在列表中创建一个新帖子。我还想将新帖子添加到开头,而不是结尾。任何帮助都将不胜感激

您可以使用
平面列表来执行此操作。它非常容易使用,性能也很好,React Native推荐它(请看)。
这是一个使用
FlatList
的简单示例,您可以在单独的组件或函数中处理列表项,并将其传递到
FlatList
renderItem
属性中。您可以在以下位置查看
FlatList
的完整文档:

\u键提取器=(项,索引)=>item.id;
_renderItem=({item})=>(
如果(item.type==='video'){
}else if(item.type==='image'){
}否则如果。。。
...
);
render(){
返回(
);
}

谢谢您的回复。对不起,我对平面列表感到困惑,无法正确理解。什么是传递给数据的dataList?我从哪里传递项目的类型?我假设
dataList
是您的帖子列表,我假设您的帖子对象具有一个类型属性,您可以使用该属性检测帖子的类型,并为每个帖子选择适当的UI组件(例如:
).
\u renderItem
是为您的帖子返回适当UI组件的函数。您应该为每种类型的帖子定义自己的UI组件。我还没有任何api,所以我要做的是为不同的帖子添加按钮,然后单击按钮,新帖子将添加到平面列表中,是否可以创建一个空的平面列表,然后单击一个按钮创建帖子?您可以将数据数组存储在您的状态中,然后按该按钮将新帖子添加到数组中,并使用
setState
将新数组应用到状态,这样会导致渲染组件,新帖子将添加到列表中。
  _keyExtractor = (item, index) => item.id;

  _renderItem = ({item}) => (
    if (item.type === 'video') {
      <MyVideo item={item}/>
    } else if (item.type === 'image') {
      <MyImage item={item}/>
    } else if ...
      ...
  );

  render() {
    return (
      <FlatList
        data={dataList}
        keyExtractor={this._keyExtractor}
        renderItem={this._renderItem}
      />
    );
  }