如何使用 React-Bootstrap 根据项目计数创建带有拼接的轮播项目

Posted

技术标签:

【中文标题】如何使用 React-Bootstrap 根据项目计数创建带有拼接的轮播项目【英文标题】:How to create carousel items with splice based on item count using React-Bootstrap 【发布时间】:2021-02-05 14:48:00 【问题描述】:

我正在尝试拼接,以便每个页面(活动和其他项目)显示 3 个项目。但这不起作用。有人可以帮忙吗?

下面是代码:

var Cards1= filter.splice(0, Math.ceil(filter.length / 3)).map( item => 
  return (
    <div class="cards">
    <div class="title">
    <h6><b>item.Name </b></h6>
    </div>
    <div class="des">
    <p> item.DescriptionEN</p>
    </div>
    </div>
  )
)
var Cards2= filter.splice(filter.length / 3).map( item => 
  return (
    <div class="cards">
    <div class="title">
    <h6><b>item.Name </b></h6>
    </div>
    <div class="des">
    <p> item.DescriptionEN</p>
    </div>
    </div>
  )
)
<div class="main">
<div id="inam" class="carousel slide" data-ride="carousel" >
<div class="carousel-inner">
<div class="carousel-item active">
<div class="card-deck">
Cards1
</div>
</div>
<div class="carousel-item">
<div class="card-deck">
Cards2
</div>
</div>

【问题讨论】:

您需要多少个轮播项目?我不确定您是要展示 2 个还是 3 个轮播商品。 每页 3 个轮播项目 我的关于代码不适用于 3 个项目。我真的很感激这里的任何帮助。我已经尝试了一切。没有任何作用 【参考方案1】:

请试试这个。

class App extends Component 
  constructor (props) 
    super(props)
    this.state = 
      filter: [
        
          name: "AAA",
          description: "BBB"
        
      ]
    
  

  renderCards = (cards) => (
    cards.map(item => (
      <div class="cards">
        <div class="title">
          <h6><b>item.name</b></h6>
        </div>
        <div class="des">
          <p>item.description</p>
        </div>
      </div>
    ))
  )

  getSeparatedArray = (array) => 
    const res = [];
    for (let i = 0; i < array.length; i += 3) 
        const temp = array.slice(i, i + 3);
        res.push(temp);
    
    return res;
  

  render () 
    const  filter  = this.state
    const cardsList = this.getSeparatedArray(filter)

    return (
      <div class="main">
        <div id="inam" class="carousel slide" data-ride="carousel" >
          <div class="carousel-inner">
            
              cardsList.map(cards => (
                <div class="carousel-item">
                  <div class="card-deck">
                    this.renderCards(cards)
                  </div>
                </div>
              ))
            
          </div>
        </div>
      </div>
    )
  

【讨论】:

非常感谢您的及时回复。这真的帮助了我。但唯一的问题是,如果我有 100 件物品/卡片,我可能无法做到这一点。而不是定义为 const 卡,这是我可以做的事情吗..?非常感谢您在这方面的帮助。 即使您拥有超过 100 个项目也没关系。让我更新一下答案,这样你就可以得到什么了。 我还想补充一点,通过上述解决方案,我在第一张幻灯片中获得 3 个项目,在后续幻灯片中获得 2 个项目。 假设过滤器数组长度为7。在这种情况下,当前逻辑将显示2、2、3项。 我刚刚又编辑了一遍。希望这是你需要的。

以上是关于如何使用 React-Bootstrap 根据项目计数创建带有拼接的轮播项目的主要内容,如果未能解决你的问题,请参考以下文章

如何自定义 react-bootstrap 组件?

如何使用 flexbox 将所有元素放入 React-Bootstrap 卡中?

如何根据 HTML 输出清除 CSS?

Typescript:如何从 react-bootstrap 导入特定组件

如何使用 react-bootstrap 为单选按钮调用 onChange?

如何使用自定义 css 文件覆盖 react-bootstrap