React Native Flatlist 中的网格视图

Ozz*_*zie 1 gridview react-native

我怎样才能在 FlatList 组件中的 react native 中实现这样的视图?

通常在 web 中使用 css grid 很容易,但我无法在 react native 中做到这一点。

在此处输入图片说明

小智 5

如果你想渲染一个n by n网格,你可以利用 FlatList 的numColumns属性。然后,您可以将数据传递到 FlatList 的data属性中,以通过在renderItem属性中传递一个函数来指定如何呈现网格中的每个单元格。

一个粗略的例子如下所示:

import { FlatList } from "react-native";

<FlatList 
  data={myData}
  numColumns={3}
  renderItem={({ item }) => <MyCellComponent cellData={item} />}
/>
Run Code Online (Sandbox Code Playgroud)

但是,您的问题有点不同,因为您想要渲染不均匀的网格。您可以将网格划分为两个独立的组件 ComponentA 和 ComponentB,并将它们呈现在 ScrollView 中。

在此处输入图片说明

一个粗略的代码示例如下所示:

import { ScrollView } from "react-native";

<ScrollView>
  <ComponentA />
  <ComponentB />
  <ComponentA />
</ScrollView>
Run Code Online (Sandbox Code Playgroud)

不过,如果您真的想使用 FlatList,那么您可以创建第三个组件 ComponentC,它基本上可以像这样包装前面的示例:

import { View } from "react-native";

function ComponentC() {
  return (
    <View>
      <ComponentA />
      <ComponentB />
      <ComponentA />
    </View>
  );
}
Run Code Online (Sandbox Code Playgroud)

然后将其呈现在 FlatList 中:

<FlatList 
  data={myData}
  renderItem={({ item }) => (<ComponentC data={item} />)}
/>
Run Code Online (Sandbox Code Playgroud)