-
[React] Swiper.js Cheat sheetDev 2023. 4. 15. 21:14
1. Custom Navigation
import { Navigation } from 'swiper'; import { Swiper, SwiperSlide } from 'swiper/react'; import { Swiper as SwiperCore } from 'swiper/types'; function CustomSlider() { const swiperRef = useRef<SwiperCore>(); const [init, setInit] = useState(true); const [prevDisabled, setPrevDisabled] = useState(false); const [nextDisabled, setNextDisabled] = useState(false); return ( <div> {/* Custom Prev Button */} <button type="button" onClick={() => { swiperRef.current?.slidePrev(); // swiper의 slidePrev 실행 setNextDisabled(false); // 슬라이드 변경 시 비활성화 상태 해제 }} className={init || prevDisabled ? 'disabled' : ''} // 처음 진입이거나, 첫번째 슬라이드이면 네비게이션 비활성화 > <PrevIcon/> </button> {/* Custom Prev Button */} <Swiper onBeforeInit={(swiper) => swiperRef.current = swiper} // ref에 swiper 저장 modules={[Navigation]} spaceBetween={40} onSlideChange={() => setInit(false)} // 슬라이드 변경 시 실행 onReachBeginning={(e) => setPrevDisabled(true)} // slide가 처음에 닿으면 실행 onReachEnd={(e) => setNextDisabled(true)} // slide가 마지막에 닿으면 실행 > {slideList.map((e) => ( <SwiperSlide key={e.id}> <Slide/> </SwiperSlide> ))} </Swiper> {/* Custom Next Button */} <button type="button" onClick={() => { swiperRef.current?.slideNext(); // swiper의 slideNext 실행 setPrevDisabled(false); // 슬라이드 변경 시 비활성화 상태 해제 }} className={nextDisabled ? 'disabled' : ''} // 마지막 슬라이드이면 네비게이션 비활성화 > <NextIcon/> </button> {/* Custom Next Button */} </div> ); }
'Dev' 카테고리의 다른 글
[Next.js] Next.js 13 Study (0) 2023.04.17 [React] IntersectionObserver를 사용한 infinite scroll 구현하기 (0) 2023.04.17 [Extension] mac에서 vs code 창 투명하게 하기 (0) 2023.04.15 [Mac] 사용중인 port kill (0) 2023.04.05 타입스크립트 프로그래밍 4장 (0) 2023.03.03