首页 > 解决方案 > 如何使用 react-responsive-carousel 垂直和水平(嵌套)移动 Carousel

问题描述

我在 Ionic react 工作。我添加了 react-responsive-carousel 用于滑动内容,我需要根据条件垂直和水平滚动轮播。我该如何解决这个问题?请帮忙

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import "react-responsive-carousel/lib/styles/carousel.min.css"; // requires a loader
import { Carousel } from 'react-responsive-carousel';

class DemoCarousel extends Component {
    render() {
        return (
            <Carousel>
                <div>
                    <img src="assets/1.jpeg" />
                    <p className="legend">Legend 1</p>
                </div>
                <div>
                    <img src="assets/2.jpeg" />
                    <p className="legend">Legend 2</p>
                </div>
                <div>
                    <img src="assets/3.jpeg" />
                    <p className="legend">Legend 3</p>
                </div>
            </Carousel>
        );
    }
});

ReactDOM.render(<DemoCarousel />, document.querySelector('.demo-carousel'));

// Don't forget to include the css in your page

// Using webpack or parcel with a style loader
// import styles from 'react-responsive-carousel/lib/styles/carousel.min.css';

// Using html tag:
// <link rel="stylesheet" href="<NODE_MODULES_FOLDER>/react-responsive-carousel/lib/styles/carousel.min.css"/>

标签: javascriptcssreactjsionic-frameworkreact-responsive-carousel

解决方案


根据文档,您可以将滚动方向作为参数传递给 Carousel'horizontal''vertical'

将滚动方向的 2 个选项存储为变量,并根据条件设置滚动方向。

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import "react-responsive-carousel/lib/styles/carousel.min.css"; // requires a loader
import { Carousel } from 'react-responsive-carousel';

const SCROLL_DIRECTION = {
   H = "horizontal",
   V = "vertical"
}

class DemoCarousel extends Component {  
    constructor() {
    super()
    this.state = {
      scrollDirection: SCROLL_DIRECTION.H // or SCROLL_DIRECTION.V
    }
   }
    render() {
        return (
            <Carousel
              direction = {this.state.scrollDirection} 
            >
                <div>
                    <img src="assets/1.jpeg" />
                    <p className="legend">Legend 1</p>
                </div>
                <div>
                    <img src="assets/2.jpeg" />
                    <p className="legend">Legend 2</p>
                </div>
                <div>
                    <img src="assets/3.jpeg" />
                    <p className="legend">Legend 3</p>
                </div>
            </Carousel>
        );
    }
});

ReactDOM.render(<DemoCarousel />, document.querySelector('.demo-carousel'));

// Don't forget to include the css in your page

// Using webpack or parcel with a style loader
// import styles from 'react-responsive-carousel/lib/styles/carousel.min.css';

// Using html tag:
// <link rel="stylesheet" href="<NODE_MODULES_FOLDER>/react-responsive-carousel/lib/styles/carousel.min.css"/>




推荐阅读