材质用户界面-连续3张卡片,而不是一列中的所有卡片

时间:2018-07-30 13:32:11

标签: reactjs material-ui

我正在使用材质UI进行反应, 我在一个阵列中有40张动态卡,当我渲染它们时,我想连续拥有3张卡,并且将所有卡都放在一列中。 我正在使用这张卡: https://codesandbox.io/s/r084q99q34

3 个答案:

答案 0 :(得分:2)

您可以为此使用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

答案 1 :(得分:1)

材料UI提供了GridListGridListTile组件。这样您就可以很好地配置它。

网格使您可以定义列和单元格。 tile占用一个插槽,并不断将它们装入列中,并在需要时自动溢出它们。您可以在官方documents中阅读更多内容,并查看其samples以获得灵感。

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

如果由于某些原因内置组件不适合您的需求,或者网格仍然使您感到困惑,请查看它们的交互式layout examples

答案 2 :(得分:1)

也许您可以使用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>
    )
}