轮播图---swiper
import React, { useState } from "react";
import SwiperCore, { Autoplay, Pagination } from "swiper";
import { Swiper, SwiperSlide } from "swiper/react/swiper-react.js";
import "swiper/swiper.scss";
import "swiper/modules/navigation/navigation.scss";
import "swiper/modules/pagination/pagination.scss";
import styles from "./index.module.scss";
SwiperCore.use([Autoplay, Pagination]);
interface PropsType {
children: Array<JSX.Element>;
className?: string;
swiperConfig?: any;
accessoryRenderer?: (data: { curIndex: number }) => JSX.Element;
onSlideDone?: (e) => void;
}
export default (props: PropsType) => {
const [sliderIndex, setSliderIndex] = useState(0);
const {
children,
className = "",
swiperConfig = {},
accessoryRenderer,
onSlideDone,
} = props;
const swiperConfigResult = Object.assign(
{
autoplay: false,
// autoplay:false,
spaceBetween: 1,
loop: false,
allowTouchMove: true,
noSwiping: true,
pagination:
children.length > 1
? { el: ".swiper-pagination", clickable: true }
: false,
},
swiperConfig
);
return (
<div className={"service-carousel " + className}>
<Swiper
{...swiperConfigResult}
onSlideChange={(slide) => {
setSliderIndex(slide.realIndex);
if (onSlideDone) {
slide.realIndex === 1 ? onSlideDone(1) : onSlideDone(0);
}
}}
>
{props.children.map((item, index) => {
return <SwiperSlide key={index}>{item}</SwiperSlide>;
})}
{children.length > 1 && (
<div
className={[styles.swiperPagination, "swiper-pagination"].join(" ")}
></div>
)}
</Swiper>
{/* 辅助渲染下标的 */}
{accessoryRenderer ? accessoryRenderer({ curIndex: sliderIndex }) : null}
</div>
);
};
一些swiper网站地址
https://www.patreon.com/swiperjs https://swiperjs.com/swiper-api#pagination https://swiperjs.com/react https://www.swiper.com.cn/usage/index.html

浙公网安备 33010602011771号