【发布时间】:2021-08-29 02:53:39
【问题描述】:
我是 javascript 的新手并做出反应。我需要一种自动将卡片排列在新行中的方法。每行三张卡片,如果我有超过三张,为第四张卡片创建一个新行。我找到了答案,但我无法将这种方式转换为我的项目。 我是自学成才,这是我的第一个项目实践。
我的代码:
{
this.props.products.map((product) => (
<Row>
<CardGroup>
<Card>
<CardImg
top
width="100%"
src={`${process.env.PUBLIC_URL}/assets/images/1.jpg`}
alt="Card image cap"
/>
<CardBody>
<CardTitle tag="h5">{product.productName}</CardTitle>
<CardSubtitle tag="h6" className="mb-4 text-muted">
author
</CardSubtitle>
<CardText>casdadasdx</CardText>
</CardBody>
</Card>
</CardGroup>
</Row>
));
}
答案:您可以创建一个包含 3 张卡片组的数组,然后对其进行迭代: 答案代码:
const arr = var x = arr.reduce((item, key, index) => (index % 3 == 0 ? item.push([key]) : item[item.length-1].push(key)) && item, []);
const Items = ({items}) => (
<>
<container>
{arr.map(group => (
<row>
<CardGroup>
{group.map(card => (
<Card style={{ width: '18rem' }}>
<Card.Body>
<Card.Title>{item.NOME}</Card.Title>
<Card.Subtitle className="mb-2 text-muted">{item.CATEGORIA}</Card.Subtitle>
<Card.Text>{item.DESCRICAO}</Card.Text>
<Card.Link href="#">Card Link</Card.Link>
<Card.Link href="#">Another Link</Card.Link>
</Card.Body>
</Card>
))}
</CardGroup>
</row>
))}
</container>
</>
);
【问题讨论】:
-
嘿,这不是逻辑问题——你应该在 css 中处理它——尤其是在 flex 中。
-
CSS Trucks 有一篇关于 Flexbox 的精彩文章。这包含您需要了解的所有布局。
标签: javascript reactjs reactstrap card