2017-07-01 76 views
-1

我有一个对象数组。我想不通我怎么在每一个创建多个的卡片与3张卡,如在图像上:
enter image description hereReact将阵列数据映射到卡片台的好方法

下面是一个例子:

import { Card, Button, ... CardBlock } from 'reactstrap'; 

export default const Example = (props) => { 
    return (<div> 
    <CardDeck> 
     <Card> 
     <CardImg top width="100%" src="https://..." /> 
     <CardBlock> 
      <CardTitle>{data.title}</CardTitle> 
      <CardSubtitle>{data.subtitle}/CardSubtitle> 
      <CardText>{data.text}</CardText> 
      <Button>Button</Button> 
     </CardBlock> 
     </Card> 
     <Card> 
     ... 
     </Card> 
     <Card> 
     ... 
     </Card> 
    </CardDeck> 

    <CardDeck> 
     ... 
    </CardDeck> 
     ... 
    </div> 
); 
}; 
+0

那么在你的代码中不能按预期工作?你能问一个具体的问题吗? – trixn

回答

2

如果你的问题是关于如何迭代你的数组,那么你可以使用Array.prototype.map()

用箭头函数从react docsmap()呼叫的例子:

通过保存部件在临时变量:

function NumberList(props) { 
    const numbers = props.numbers; 
    const listItems = numbers.map((number) => 
    <ListItem key={number.toString()} 
       value={number} /> 
); 
    return (
    <ul> 
     {listItems} 
    </ul> 
); 
} 

通过使用map()直列:

function NumberList(props) { 
    const numbers = props.numbers; 
    return (
    <ul> 
     {numbers.map((number) => 
     <ListItem key={number.toString()} 
        value={number} /> 
    )} 
    </ul> 
); 
} 

编辑:

请勿渲染多个<CardDeck>组件。取而代之的是调整你的css,这样当有更多的三个时,<Card>会换行到下一行。然后,您只需将数据映射到阵列中一次,而不是再次对每个<CardDeck>进行映射。

+0

你建议我做 items.map(...) items.map(...) items.map(...)?如果我的array.length是30个项目=>那么我需要创建10个地图? –

+1

那么我不会提出任何建议。你没有问一个问题,所以我猜测你到底在争什么。如果你的数据结构是一个数组,那么你应该修改你的css,这样第四张卡片就会漂浮在下一行,并且只会迭代你的结构一次。你应该设计一个组件,以便它可以渲染任意数量的卡片,而不是那种总是6或9或任何数量的固定布局。 – trixn

+0

好吧,如果在这种情况下React JS不能帮助我 - 那么是的 - 只有CSS ... –