如何在react native in a FlatList组件中实现这样的视图?通常在网络中,使用css网格很容易,但我无法在react native中实现。
rm5edbpk1#
如果要渲染n by n网格,可以使用FlatList的numColumns属性,然后只需将数据传递到FlatList的data属性中,通过在renderItem属性中传递函数来指定如何渲染网格中的每个单元格。一个粗略的例子如下所示:
n by n
numColumns
data
renderItem
import { FlatList } from "react-native"; <FlatList data={myData} numColumns={3} renderItem={({ item }) => <MyCellComponent cellData={item} />} />
但是,您的问题有点不同,因为您想要呈现一个不均匀的网格。您可以将网格划分为两个独立的组件,ComponentA和ComponentB,并在ScrollView中呈现它们。
一个粗略的代码示例如下所示:
import { ScrollView } from "react-native"; <ScrollView> <ComponentA /> <ComponentB /> <ComponentA /> </ScrollView>
不过,如果您真的想使用FlatList,那么您可以创建第三个组件ComponentC,它基本上会像这样 Package 上一个示例:
import { View } from "react-native"; function ComponentC() { return ( <View> <ComponentA /> <ComponentB /> <ComponentA /> </View> ); }
然后在FlatList内部呈现它:
<FlatList data={myData} renderItem={({ item }) => (<ComponentC data={item} />)} />
mo49yndu2#
另一种可能的解决方案是使用FlashList https://shopify.github.io/flash-list/docs/guides/masonry
import React from "react"; import { View, Text, StatusBar } from "react-native"; import { MasonryFlashList } from "@shopify/flash-list"; import { DATA } from "./data"; const MyMasonryList = () => { return ( <MasonryFlashList data={DATA} numColumns={2} renderItem={({ item }) => <Text>{item.title}</Text>} estimatedItemSize={200} /> ); };
2条答案
按热度按时间rm5edbpk1#
如果要渲染
n by n
网格,可以使用FlatList的numColumns
属性,然后只需将数据传递到FlatList的data
属性中,通过在renderItem
属性中传递函数来指定如何渲染网格中的每个单元格。一个粗略的例子如下所示:
但是,您的问题有点不同,因为您想要呈现一个不均匀的网格。您可以将网格划分为两个独立的组件,ComponentA和ComponentB,并在ScrollView中呈现它们。
一个粗略的代码示例如下所示:
不过,如果您真的想使用FlatList,那么您可以创建第三个组件ComponentC,它基本上会像这样 Package 上一个示例:
然后在FlatList内部呈现它:
mo49yndu2#
另一种可能的解决方案是使用FlashList https://shopify.github.io/flash-list/docs/guides/masonry