使用 flex 将项目添加到 n 列网格中

Adding items into n column grids using flex

我正在尝试创建类似于下图的项目列表。

目前我正在创建一个 RowComponent 并在其中包含 ItemContainer 组件以创建上述效果。

const styles = StyleSheet.create({
  containerStyle: {
    display: 'flex',
    flexDirection: 'row',
  },
});

const RowComponent = () => {
  const { containerStyle } = styles;

  return (
    <View style={containerStyle}>
      <ItemContainer />
      <ItemContainer />
    </View>
  );
};

主屏幕视图

<View style={containerStyle}>
  <RowComponent />
  <RowComponent />
</View>

我发现这种方法效率很低,因此我希望知道如何通过复制 ItemContainer 来创建上述效果。

例如:

<View style={containerStyle}>
  <ItemContainer />
  <ItemContainer />
  <ItemContainer />
  <ItemContainer />
</View>

how I can create this effect by just duplicating the ItemContainer to create the mentioned effect.

您可以在 containerStyle 中将 flexWrap 属性 设置为 wrap。像这样:

  containerStyle: {
    display: 'flex',
    flexDirection: 'row',
    flexWrap:"wrap"
  },

现在没有 RowComponent 也可以实现相同的布局。


<View style={styles.containerStyle}>

    <View style={styles.itemContainer} />
    <View style={styles.itemContainer} />
    <View style={styles.itemContainer} />
    <View style={styles.itemContainer} />
    <View style={styles.itemContainer} />

</View>

风格:

  containerStyle: {
    display: 'flex',
    flexDirection: 'row',
    flexWrap:"wrap"
  },
  itemContainer: {
    width:"45%",
    height:80,
    marginRight:"5%",
    marginBottom:10,
    backgroundColor:"red"
  }