我正在使用材质UI进行反应, 我在一个阵列中有40张动态卡,当我渲染它们时,我想连续拥有3张卡,并且将所有卡都放在一列中。 我正在使用这张卡: https://codesandbox.io/s/r084q99q34
答案 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>
答案 1 :(得分:1)
材料UI提供了GridList
和GridListTile
组件。这样您就可以很好地配置它。
网格使您可以定义列和单元格。 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>
)
}