ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [React] Swiper.js Cheat sheet
    Dev 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>
        );
    }

    댓글

Designed by Tistory.