【问题标题】:How to map() items in row with React-Bootstrap如何使用 React-Bootstrap 映射()项目
【发布时间】:2019-12-04 21:53:03
【问题描述】:

我正在使用 React-Bootstrap 库开发一个 React 应用程序。 我显示了一个 ShopResume 组件,该组件在内部的地图功能中呈现 CardGroup 元素,以将我的数据映射到 CardGroup 中的每张卡片上。

我希望按行最多显示 3 张卡片。但我所有的改变似乎都不起作用。有人可以帮我解决吗?

现在我的所有卡片都只显示在一行上。当我的渲染已经在一行上显示 2 个项目时,我想创建新行。

奖励问题:即使条件为真,我的三元运算符也不显示它应该显示的内容。如果有任何想法会出现在哪里。我将不胜感激。

非常感谢您一如既往的帮助和宝贵的回答

class ShopResume extends Component {
  state = {};
  render() {

    return (
      <React.Fragment>
 {(this.props.filteredResults === [""]) ? "Aucun Résultat" : 

    ( <CardGroup className="card_container">
      {this.props.filteredResults.map((detail, index) => {
        return (
          <Card className="card_item" key={index}>
            <Card.Img variant="top" src={detail.imgURL} id="card_img" />
            <Card.Body>
              <Card.Title className="shopTitle">{detail.nom}</Card.Title>
              <Card.Text>{detail.resume}</Card.Text>
              <Button variant="primary" onClick={this.props.filterClick}>Détails</Button>


              <ListGroup className="list-group-flush">
                <ListGroupItem>
                  {detail.startPrice === "" ? "Sur devis" : 'A partir de ' + detail.startPrice + ' €'}
                </ListGroupItem>

              </ListGroup>
            </Card.Body>
          </Card>

        );
      })}
    </CardGroup>)}
    </React.Fragment>
    );
  }
}
export default ShopResume;

【问题讨论】:

  • 您能否编写一个代码框来重现此问题?
  • 您的三元运算符不起作用,因为您正在比较 2 个对象(数组是对象),它们是非原始类型。每个对象都有自己的内存位置,因此当您比较它们时,您基本上是在检查它们是否具有相同的内存位置,这是不可能的。 Here 更多的是关于这个话题。关于另一个问题,如果你能提供一个活生生的例子,那就太好了。
  • 首先,非常感谢您的回答。我试着添加一个活生生的例子来更清楚。带着它快点回来。非常感谢
  • 关于你的三元运算符:this.props.filteredResults === [""] 尝试这样写:this.props.filteredResults.length ===0

标签: css reactjs react-bootstrap


【解决方案1】:

您可以将列表包装在 Container 和 Row 中。每个项目将是一个 Col 项目,其 xs 属性为 4,因此一行中仅显示 3 个项目(每行 12 列 / 每卡 4 列 = 每行 3 张卡)。这是codepen

【讨论】:

  • 谢谢你,这解决了我的问题,就像一个魅力!我很明白为什么。非常感谢。现在只是元素: 不能用 .card_img{ width: 150px; } 在我附加的 CSS 中。大小图像现在不改变我解决了行问题。如果您有任何想法,我接受 :) 感谢您所做的一切
  • 这对你有帮助,太好了。那你能接受答案吗?关于您的宽度问题:您不能像这样设置大小,因为 Col 元素现在设置大小使它们适合连续 3 米。你可以使用 !important 来处理你的情况,但你会响应你的反应。还有一个 padding 或 margin 道具,你应该使用它。阅读本文了解更多信息:react-bootstrap.github.io/layout/grid
猜你喜欢
  • 2017-03-05
  • 1970-01-01
  • 2018-12-31
  • 2011-03-04
  • 1970-01-01
  • 2021-08-08
  • 1970-01-01
  • 2021-11-03
  • 2020-03-02
相关资源
最近更新 更多