连续三张牌而不是一列中的所有牌

IT技术 reactjs material-ui
2021-05-11 17:50:51

我正在使用材质 UI 进行react,我在一个数组中有 40 张动态卡片,当我渲染它们时,我希望连续有 3 张卡片,并且我将所有卡片放在一列中。我正在使用这张卡:https : //codesandbox.io/s/r084q99q34

3个回答

也许你可以使用 Flexbox ?我遇到了同样的问题,由于 FlexBox 槽材料 ui,我解决了它。另外,请务必使用优于或等于 4 的材料核心版本。希望它有所帮助!

import React from 'react'
import { makeStyles } from '@material-ui/core/styles'
import {
    Grid,
    Card,
    CardContent,
    Typography,
    CardHeader
} from '@material-ui/core/'

const useStyles = makeStyles(theme => ({
    root: {
        flexGrow: 1,
        padding: theme.spacing(2)
    }
}))

export default function AltCard() {
    const classes = useStyles()
    const data = [
        { quarter: 1, earnings: 13000 },
        { quarter: 2, earnings: 16500 },
        { quarter: 3, earnings: 14250 },
        { quarter: 4, earnings: 19000 }
    ]
    return (
        <div className={classes.root}>
            <Grid
                container
                spacing={2}
                direction="row"
                justify="flex-start"
                alignItems="flex-start"
            >
                {data.map(elem => (
                    <Grid item xs={12} sm={6} md={3} key={data.indexOf(elem)}>
                        <Card>
                            <CardHeader
                                title={`quarter : ${elem.quarter}`}
                                subheader={`earnings : ${elem.earnings}`}
                            />
                            <CardContent>
                                <Typography variant="h5" gutterBottom>
                                    Hello World
                                </Typography>
                            </CardContent>
                        </Card>
                     </Grid>
                ))}
            </Grid>
        </div>
    )
}

您可以为此使用Grid组件,例如

<Grid container spacing={24}>
  <Grid item md={3}>
    <Demo />
  </Grid>
  <Grid item md={3}>
    <Demo />
  </Grid>
  <Grid item md={3}>
    <Demo />
  </Grid>
</Grid>

https://codesandbox.io/s/rzmz5jnom

Material UI 提供GridListGridListTile组件。这让你可以很好地配置它。

Grid 允许您定义列和单元格。Atile占用一个插槽,并不断将它们装入列中,并在需要时自动溢出它们。您可以在官方文档中阅读更多内容,并查看他们的示例以获取灵感。

let nums = Array.from(Array(40).keys());

  render(
    <GridList cols={3}>
      {nums.map(n => {
        return (
          <GridListTile key={n}>
            <Demo key={n} num={n} />
          </GridListTile>
        );
      })}
    </GridList>,
    rootElement
  );

查看分叉沙箱:https : //codesandbox.io/s/5yjpp339w4

如果由于某种原因内置组件不适合您的需求,或者如果网格仍然让您感到困惑,请查看他们的交互式布局示例