Effitizer 메인 페이지 상단의 배너 슬라이드를 구현하였다.
(다음은 두 번 자동으로 넘어가고 오른쪽 화살표를 눌러 수동으로 넘기는 모습)
export const Slider = () => {
const [index, setIndex] = useState(3);
const scrollRef = useRef<HTMLDivElement>(null);
const MOVING = 941; // 상수 사용
useEffect(() => {
const interval = setInterval(() => {
setIndex((prev) =>
prev === slides.slides.length - 1 ? (prev = 0) : prev + 1
);
if (scrollRef.current) {
scrollRef.current.scrollLeft += MOVING;
}
}, 3000);
return () => clearInterval(interval);
}, [index, MOVING]);
const onLeftClick = () => {
if (scrollRef.current) {
scrollRef.current.scrollLeft -= MOVING;
}
setIndex((prev) =>
prev === 0 ? (prev = slides.slides.length - 1) : prev - 1
);
};
const onRightClick = () => {
if (scrollRef.current) {
scrollRef.current.scrollLeft += MOVING;
}
setIndex((prev) =>
prev === slides.slides.length - 1 ? (prev = 0) : prev + 1
);
};