【问题标题】:Controllable React Bootstrap Carousel component not working可控的 React Bootstrap Carousel 组件不工作
【发布时间】:2020-01-22 05:53:11
【问题描述】:

这是我在底部收到错误的组件中的代码。

这是我从https://react-bootstrap.github.io/components/carousel/获得可控轮播代码的地方

有人知道我为什么会收到这个错误吗?我看不出 handleSelect 方法是怎么错的……

import React, { Component } from 'react';
import Carousel from 'react-bootstrap/Carousel'


class CarouselComponent extends Component {

    setIndex = (selectedIndex) => {
    this.setState({index: selectedIndex})
    }   

    setDirection = (direction) => {
        this.setState({direction: direction})
    }

    handleSelect = (selectedIndex, e) => {
        this.setIndex(selectedIndex);
        this.setDirection(e.direction);
    }

    constructor(props) {
        super(props);
        this.state = {
            index: 0,
            setIndex: 0,
            direction: null,
            setDirection: null
        };
    }

    render() {
        const { index, direction } = this.state;
        return (
            <div>
                <Carousel activeIndex={index} direction={direction} onSelect={this.handleSelect}>
                    <Carousel.Item>
                        <img
                            className="d-block w-100"
                            src="https://proxy.duckduckgo.com/iu/?u=http%3A%2F%2Fnapipelines.com%2Fwp-content%2Fuploads%2F2014%2F11%2FKomatsu-PC210LCi-10.jpg&f=1&nofb=1" alt="First slide"
                        />
                        <Carousel.Caption>
                            <h3>First slide label</h3>
                            <p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>
                        </Carousel.Caption>
                    </Carousel.Item>
                    <Carousel.Item>
                        <img
                            className="d-block w-100"
                            src="holder.js/800x400?text=Second slide&bg=282c34"
                            alt="Second slide"
                        />

                        <Carousel.Caption>
                            <h3>Second slide label</h3>
                            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
                        </Carousel.Caption>
                    </Carousel.Item>
                    <Carousel.Item>
                        <img
                            className="d-block w-100"
                            src="https://proxy.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.volvoce.com%2F-%2Fmedia%2Fvolvoce%2Fglobal%2Fproducts%2Fexcavators%2Fcrawler-excavators%2Fhero%2Fvolvo-show-crawler-excavator-ec750e-t4f-2324x1200.jpg%3Fmh%3D620%26mw%3D1205%26v%3DIP4tPw%26c%3D1%26cw%3D1200%26ch%3D620%26jq%3D80%26hash%3DD74491474FE2F6213A24E81C13AF995AD8D41A0D&f=1&nofb=1" alt="Third slide"
                        />

                        <Carousel.Caption>
                            <h3>Third slide label</h3>
                            <p>
                                Praesent commodo cursus magna, vel scelerisque nisl consectetur.
          </p>
                        </Carousel.Caption>
                    </Carousel.Item>
                </Carousel>

            </div>
        );
    }

}


export default CarouselComponent;

这是我遇到的错误。

./src/components/CarouselComponent.jsx
  Line 7:  Parsing error: Unexpected token

   5 | class CarouselComponent extends Component {
   6 | 
>  7 |    function handleSelect(selectedIndex, e) {
     |             ^
   8 |     setIndex(selectedIndex);
   9 |     setDirection(e.direction);
  10 | }

【问题讨论】:

  • 我也尝试添加 this.handleSelect = this.handleSelect.bind(this);在构造函数中,然后在轮播组件中调用 this.handleSelect。没用

标签: reactjs bootstrap-4 react-bootstrap


【解决方案1】:

语法错误。看看下面的sn-p。

import React, { Component } from 'react';
import Carousel from 'react-bootstrap/Carousel'


class CarouselComponent extends Component {

    setIndex = () => {
    //Implement method
    }

     setDirection = () =>  {
        //Implement method
     }

   handleSelect = (selectedIndex, e) => {
    this.setIndex(selectedIndex);
    this.setDirection(e.direction);
    }

constructor(props) {
    super(props);
    this.state = {
        index: 0,
        setIndex: 0,
        direction: null,
        setDirection: null
    };
}

render() {
    const {index, direction} =  this.state;
    return (
        <div>
    <Carousel interval={false} activeIndex={index} direction={direction} onSelect={this.handleSelect}>
                <Carousel.Item>
                    <img
                        className="d-block w-100"
                        src="holder.js/800x400?text=First slide&bg=373940"
                        alt="First slide"
                    />
                    <Carousel.Caption>
                        <h3>First slide label</h3>
                        <p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>
                    </Carousel.Caption>
                </Carousel.Item>
                <Carousel.Item>
                    <img
                        className="d-block w-100"
                        src="holder.js/800x400?text=Second slide&bg=282c34"
                        alt="Second slide"
                    />

                    <Carousel.Caption>
                        <h3>Second slide label</h3>
                        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
                    </Carousel.Caption>
                </Carousel.Item>
                <Carousel.Item>
                    <img
                        className="d-block w-100"
                        src="holder.js/800x400?text=Third slide&bg=20232a"
                        alt="Third slide"
                    />

                    <Carousel.Caption>
                        <h3>Third slide label</h3>
                        <p>
                            Praesent commodo cursus magna, vel scelerisque nisl consectetur.
          </p>
                    </Carousel.Caption>
                </Carousel.Item>
            </Carousel>

            </div>
    );
}

}


export default CarouselComponent;

【讨论】:

  • 感谢您的意见。我实现了这些功能,但我仍然得到“自动”轮播功能。我更新了问题中的代码。你能看看吗?
  • 没有错误,我只是想知道是否可以“关闭”自动轮播功能。这样它就不会自行改变:)
  • stackoverflow.com/questions/14977392/… 我尝试将 data-interval: false 属性添加到包装器 div。没用
  • 尝试将轮播上的间隔属性设置为 false。
  • interval= {false} 很遗憾没有这样做。 interval="null" 或 interval="0" 也不起作用。 Docs 说:“自动循环一个项目之间的延迟时间。如果为 null,carousel 将不会自动循环。”有什么想法吗?
猜你喜欢
  • 2012-03-04
  • 2014-09-17
  • 2021-01-15
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
相关资源
最近更新 更多