代码之家  ›  专栏  ›  技术社区  ›  Mizlul

如何在React中显示图像滑块

  •  1
  • Mizlul  · 技术社区  · 7 年前

    我正在使用这个插件 https://github.com/akiran/react-slick 对于图像滑块,但由于某种原因,我无法实现我想要的。

    以下是示例代码:

    import React, { Component } from "react";
    import Slider from "../src/slider";
    import { baseUrl } from "./config";
    
    export default class CenterMode extends Component {
      render() {
        const settings = {
          customPaging: function(i) {
            return (
              <a>
                <img src={`${baseUrl}/abstract0${i + 1}.jpg`} />
              </a>
            );
          },
          dots: true,
          dotsClass: "slick-dots slick-thumb",
          infinite: true,
          speed: 500,
          slidesToShow: 1,
          slidesToScroll: 1
        };
        return (
          <div>
            <h2>Custom Paging</h2>
            <Slider {...settings}>
              <div>
                <img src={baseUrl + "/abstract01.jpg"} />
              </div>
              <div>
                <img src={baseUrl + "/abstract02.jpg"} />
              </div>
              <div>
                <img src={baseUrl + "/abstract03.jpg"} />
              </div>
              <div>
                <img src={baseUrl + "/abstract04.jpg"} />
              </div>
            </Slider>
          </div>
        );
      }
    }
    

    除非图像文件名类似于abstract01、abstract02,否则这非常好,在我的例子中,图像文件名是随机的,它可以是任何东西,因此缩略图部分对我不起作用。有没有其他的选择我可以通过 自定义分页 以便我能收到 SRC 属性,可以从中获取文件名。

    任何想法在这里都会很受欢迎。 注:我的图片来自亚马逊S3,所以我完全无法控制它们!

    1 回复  |  直到 7 年前
        1
  •  2
  •   Droow    7 年前

    我相信你可以这样做:

    const images = [
      { src: baseUrl + "/abstract01.jpg" },
      { src: baseUrl + "/abstract02.jpg" },
      { src: baseUrl + "/abstract03.jpg" },
      { src: baseUrl + "/abstract04.jpg" },
    ];
    
    export default class App extends Component {
      render() {
        const settings = {
          customPaging: function (i) {
            return (
              <a>
                <img src={images[i].src} />
              </a>
            );
          },
          dots: true,
          dotsClass: "slick-dots slick-thumb",
          infinite: true,
          speed: 500,
          slidesToShow: 1,
          slidesToScroll: 1
        };
        return (
          <div>
            <h2>Custom Paging</h2>
            <Slider {...settings}>
              {images.map((img) => (
                <div>
                  <img src={img.src} />
                </div>
              ))}
            </Slider>
          </div>
        );
      }
    }
    

    基本上,您可以创建图像数组(因为您已经知道图像),然后通过它进行映射以获取幻灯片,并使用自定义分页中的迭代器从数组中按索引获取图像。