AuctionWini Seller 사이트의 메인 페이지에서 사용된 Slider는 데이터를 map 함수로 반복 처리하여 1px씩 동적으로 계속 움직이는 방식으로 구현되어 있었습니다. 이러한 방식으로 구현된 Slider는 초기 로드 시 많은 자원을 소모하여 페이지 로딩 시간이 길어졌습니다. 이로 인해 사용자 경험이 저하되었고, Google Lighthouse 평가에서도 성능 점수가 낮게 나오는 문제가 발생했습니다.
이 문제를 해결하기 위해 React-Swiper를 도입하여 Slider 문제를 개선했습니다.
React-Swiper로 교체 전

React-Swiper로 교체 후

React-Swiper Code
{5 < data.length ? (
<SwiperContainer
slidesPerView="auto"
loop
autoplay={{
delay: 0,
stopOnLastSlide: false,
disableOnInteraction: false,
}}
speed={4000}
navigation={true}
modules={[Autoplay]}
className="swiper-container"
>
{data.map((carInfo) => {
return (
<SwiperSlide key={carInfo.N_ROWNUM}>
<MemoizeSlide
key={nextId()}
carName={carInfo.V_CARNM}
imgPath={carInfo.V_IMG_FULL_PATH}
/>
</SwiperSlide>
);
})}
</SwiperContainer>
) : (
<NoDataBlock>
<img src={noDataImage} alt="no data" />
<p> 옥션위니 전문팀이 차량을 검수중입니다.</p>
</NoDataBlock>
)}
여기서 추가적으로 Silde가 물처럼 흐르시길 바라신다면 swiper를 감싸고 입는 wrapper요소에 아래의 Css를 적용하시면 됩니다.
.swiper-wrapper {
display: flex;
transition-timing-function: linear;
}
'지식 정리 📝' 카테고리의 다른 글
Expo 호스팅을 통해 React Native 앱 배포하기 (0) | 2024.08.24 |
---|---|
차세대 이미지 포맷(WebP)을 통한 웹 성능 개선 (0) | 2024.08.22 |
웹 브라우저 페이지 이동으로 들어왔는지, 새로고침으로 들어왔는지 구분하는 법 With React & TypeScript (0) | 2024.07.17 |
크로스브라우징(Cross Browsing) - iOS 환경에서 키보드가 화면을 가리는 문제 해결 (0) | 2024.06.20 |
정규식을 활용한 특정 문자뒤의 숫자들의 합 출력 (0) | 2024.05.04 |