как показать слайдер изображений в React - PullRequest
0 голосов
/ 29 мая 2018

Я использую этот плагин 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, в моем случае имя файла изображения случайное, оно может быть любым, поэтомучасть миниатюр не работает для меня.Есть ли вариант, что я могу передать какой-то другой аргумент на customPaging , чтобы я мог получить src attr и получить оттуда имя файла.

Любая идеябудет высоко ценится здесь.Примечание: изображения в моем случае взяты из amazon s3, поэтому я вообще не могу их контролировать!

1 Ответ

0 голосов
/ 29 мая 2018

Я считаю, что вы можете сделать что-то вроде этого:

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>
    );
  }
}

По сути, вы можете создать массив изображений (потому что вы уже знаете изображения), а затем отобразить его, чтобы получить слайды и использовать итератор впользовательский пейджинг, чтобы получить изображение по индексу из вашего массива.

...