Может быть также реализовано в materializeCSS.Для этого вам нужно сделать npm install materialize-css@next
.После этого вам нужно импортировать materialize-css в ваш файл JS компонента.
Для использования компонентов Javascript materialize-css ссылка на эти компоненты должна быть сделана в componentDidMount()
, а затем она может использоваться в ref
.
CodeSandBox - рабочая демонстрация
import React, { Component } from "react";
import M from "materialize-css";
import "materialize-css/dist/css/materialize.min.css";
import data from "./data.json";
class Carousel extends Component {
componentDidMount() {
const options = {
duration: 300,
onCycleTo: () => {
console.log("New Slide");
}
};
M.Carousel.init(this.Carousel, options);
}
renderThis = () => {
return data.map(i => (
<a key={i.url} className="carousel-item">
<img src={i.url} />
</a>
));
};
render() {
return (
<div
ref={Carousel => {
this.Carousel = Carousel;
}}
className="carousel"
>
{this.renderThis()}
</div>
);
}
}
export default Carousel;