【问题标题】:bootstrap carousel does not switch between slides when used in reactjs在 reactjs 中使用时,引导轮播不会在幻灯片之间切换
【发布时间】:2020-09-14 18:05:49
【问题描述】:

我有以下 reactjs 组件,它尝试加载引导轮播。但是轮播导航不起作用,只显示第一个图像。我已经验证了第二张和第三张图片也存在于正确的路径中(通过使它们成为第一张图片)。

我们需要添加什么来在 reactjs 上使用 bootstrap carousel,因为 carousel 是 bootstrap 中的一个插件?其余的引导类(如 btn、标签等)在其余的 react 组件中工作得完美无缺。

来源:

import React from 'react'

class LandingPage extends React.Component {
  render() {
    return (
      <div className="container">
        <div id="myCarousel" className="carousel slide" data-ride="carousel">
          <ol className="carousel-indicators">
            <li data-target="#myCarousel" data-slide-to="0" className="active"></li>
            <li data-target="#myCarousel" data-slide-to="1"></li>
            <li data-target="#myCarousel" data-slide-to="2"></li>
          </ol>

          <div className="carousel-inner">

            <div className="item active">
              <img src={require("../images/pexels-photo-112640.jpeg")} alt="Chicago" className="landing-page-image" />

              <div className="carousel-caption">
                <h3>Chicago</h3>
                <p>Thank you, Chicago!</p>
              </div>
            </div>

            <div className="item">
              <img src={require("../images/pexels-photo-110473.jpeg")} alt="Los Angeles" className="landing-page-image" />

              <div className="carousel-caption">
                <h3>Los Angeles</h3>
                <p>LA is always so much fun!</p>
              </div>
            </div>

            <div className="item">
              <img src={require("../images/pexels-photo.jpg")} alt="New York" className="landing-page-image" />
              <div className="carousel-caption">
                <h3>New York</h3>
                <p>We love the Big Apple!</p>
              </div>
            </div>

          </div>

          <a className="left carousel-control" href="#myCarousel" data-slide="prev">
            <span className="glyphicon glyphicon-chevron-left"></span>
            <span className="sr-only">Previous</span>
          </a>
          <a className="right carousel-control" href="#myCarousel" data-slide="next">
            <span className="glyphicon glyphicon-chevron-right"></span>
            <span className="sr-only">Next</span>
          </a>
        </div>
      </div>
    );
  }
}

export default LandingPage

我的 index.js 中 bootstrap 的导入如下:

import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap/dist/css/bootstrap-theme.css'

复制轮播代码的教程(并将“class”更改为“className”)可在以下位置获得:https://www.w3schools.com/bootstrap/bootstrap_carousel.asp

【问题讨论】:

    标签: css twitter-bootstrap reactjs twitter-bootstrap-3 carousel


    【解决方案1】:

    问题出现是因为Bootstrap 也有一个Javascript 组件,它与React 发生冲突。您可以很好地使用Bootstrap's CSS 功能(例如带有col-md-* 的网格系统、btnlabel 您提到的类等),但Javascript 部分不起作用。而Carousel 需要BootstrapJavascript 部分(其他不起作用的Bootstrap 组件是ModalNavbar 等)。

    要解决此问题,您应该使用React-Bootstrap - Bootstrap 编写的组件React - https://react-bootstrap.github.io/

    这里是轮播部分 - https://react-bootstrap.github.io/components/carousel/

    【讨论】:

    • 我希望避免使用 react-bootstrap,因为它甚至还不是 1.0,而且我不希望它在 API 可能发生变化的生产项目中使用 :( 没有其他方法可以导入 js引导程序的依赖项(它只是 jquery 还是其他东西?)我的反应应用程序?
    • 不直接因为Bootstrap直接修改DOM,而React根据state不断改变DOM所以这意味着Bootstrap初始化它甚至不会能够锁定组件,因为 React 应用程序仍然是 mounted。由于您只需要Carousel,因此您可以构建自己的具有类似功能的React 组件,或者您可以使用其他第三方React 轮播组件-github.com/akiran/react-slickgithub.com/FormidableLabs/nuka-carousel 是在简单的Google 搜索中出现的
    • 是的,我在搜索时遇到了它们,但我有点不愿意使用最终可能无人维护的库。谢谢。
    • 同样的问题发生在我身上。旋转木马滑动只能工作一次。当您移动到另一个组件并返回时它不起作用。
    【解决方案2】:

    以你的方式需要bootstrap js,它的工作使用 jquery。

    这是解决问题的更好方法。并避免 jquery 脚本在反应方式上反应引导。这里的例子:carousel/#example

    <Carousel>
      <Carousel.Item>
       <img src={require("../images/pexels-photo-112640.jpeg")} alt="Chicago" className="landing-page-image" />
        <Carousel.Caption>
           <h3>New York</h3>
           <p>We love the Big Apple!</p>
        </Carousel.Caption>
      </Carousel.Item>
    
      <Carousel.Item>
        // your slide image 
        <Carousel.Caption>
           //....... your content
        </Carousel.Caption>
      </Carousel.Item>
    </Carousel>
    

    注意:&lt;Carousel&gt; 即时创建 .carousel 元素和 Carousel.Item 到 'carousel-item'

    谢谢

    【讨论】:

      猜你喜欢
      • 2019-05-02
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多