[리액트] 라이브러리로 손쉽게 스와이퍼(슬라이더) 구현하기
#React여러 라이브러리 중에 나는 Slick과 Swiper를 사용했다. 개인적으로 Slick 보다 Swiper가 훨씬 더 사용하기 편했다.
Slick 사용법
1. 터미널에 slick 설치
npm i react-slick slick-carousel
2. 사용할 파일에 import
import Slider from "react-slick";
import "slick-carousel/slick/slick.css";
import "slick-carousel/slick/slick-theme.css";
3. 기본 형태 붙여넣기
import Slider from "react-slick";
import "slick-carousel/slick/slick.css";
import "slick-carousel/slick/slick-theme.css";
export default function Component() {
const settings = {
dots: true,
infinite: true,
speed: 500,
slidesToShow: 1,
slidesToScroll: 1
};
return (
<div>
<h2>Title</h2>
<Slider {...settings}>
<div>
슬라이더1
</div>
<div>
슬라이더2
</div>
<div>
슬라이더3
</div>
<div>
슬라이더4
</div>
</Slider>
</div>
);
}
끝! 간편하게 사용하기는 좋으나 커스텀 하려고 하니 계속 문제가 발생했다. Next 화살표는 이미지 위에 있는데 Prev 화살표는 이미지 아래에 깔려 있어 보이지 않는 등… 이 문제에 매달리기보다는 다른 라이브러리를 찾기로 했다. 왜냐하면 그게 더 빠를 것 같았고, 또 여러 라이브러리를 써보는 게 좋을 것 같았다. 그래서 찾은 게 바로 Swiper 라이브러리!
Swiper 사용법
1. 터미널에 swiper 설치
npm i swiper
❗ 만약 Module not found: Can't resolve 'swiper/react'
오류나면 다운그레이드하기
npm i swiper@6.8.4
2. 사용할 파일에 import
import { Swiper, SwiperSlide } from "swiper/react";
import SwiperCore, { Navigation } from "swiper";
import "swiper/swiper.min.css";
SwiperCore.use([Navigation]);
3. 기본 형태 붙여넣기
function App(){
const settings = {
slidesOffsetBefore: 0,
slidesOffsetAfter : 24,
slidesPerView: 1.8,
spaceBetween: 8,
initialSlide: 1,
centeredSlides: false,
}
return (
<Swiper {...settings}>
<SwiperSlide>
슬라이더
</SwiperSlide>
</Swiper>
);
}
끝! 🤗
+) 이런 식으로 브레이크 포인트도 설정 가능하다.
Swiper를 이용해 편하게 슬라이더를 만들었다. 영화 앱을 만들면서 Pagination은 사용하지 않았고, Navigation(화살표)은 커스텀해서 사용했다.
Swiper 화살표 커스텀하기
function App(){
const prevRef = useRef(null);
const nextRef = useRef(null);
const settings = {
slidesOffsetBefore: 0,
slidesOffsetAfter : 24,
slidesPerView: 1.8,
spaceBetween: 8,
initialSlide: 1,
centeredSlides: false,
// 화살표 커스텀
navigation: {
prevEl: prevRef.current,
nextEl: nextRef.current,
},
onBeforeInit: (swiper) => {
swiper.params.navigation.prevEl = prevRef.current;
swiper.params.navigation.nextEl = nextRef.current;
swiper.navigation.update();
},
};
return (
<div className={styles.nav}>
<button ref={prevRef}><BsFillCaretLeftSquareFill /></button>
<button ref={nextRef}><BsFillCaretRightSquareFill /></button>
</div>
);
}
➕
Velog
화살표 커스텀 할 때 위 블로그를 참고했고, 개발자 도구로 Element를 확인해가면서 원하는 디자인으로 만들었다.
스와이퍼 라이브러리를 이용하면 화살표 커스텀은 그리 어렵지 않다.
➕
Module not found: Can’t resolve ‘swiper/react’
[Solved] Module not found: Can’t resolve ‘swiper/css’
스와이퍼 오류났을 때 참고함