본문으로 건너뛰기

Prev / Next

Reactive API의 isReachStart, isReachEnd, moveTo를 사용하여 캐러셀 경계에서 자동으로 비활성화되는 네비게이션 버튼을 구현합니다.

import Flicking, { connectFlickingReactiveAPI } from "@egjs/flicking";
import "@egjs/flicking/dist/flicking.css";
import "./styles.css";

const flicking = new Flicking("#flick");
const reactiveAPI = connectFlickingReactiveAPI(flicking);

const prevBtn = document.querySelector("#prev-btn");
const nextBtn = document.querySelector("#next-btn");

prevBtn.addEventListener("click", () => {
  if (!reactiveAPI.isReachStart) {
    reactiveAPI.moveTo(flicking.index - 1);
  }
});

nextBtn.addEventListener("click", () => {
  if (!reactiveAPI.isReachEnd) {
    reactiveAPI.moveTo(flicking.index + 1);
  }
});

// Update button state
reactiveAPI.subscribe("isReachStart", value => {
  prevBtn.disabled = value;
});

reactiveAPI.subscribe("isReachEnd", value => {
  nextBtn.disabled = value;
});

요약

주요 API

속성 / 메서드타입설명
isReachStartboolean첫 번째 패널이 활성 상태인지 여부
isReachEndboolean마지막 패널이 활성 상태인지 여부
currentPanelIndexnumber현재 활성화된 패널 인덱스
moveTo(i: number) => Promise특정 패널로 이동

버튼 상태

위치이전 버튼다음 버튼
첫 번째 패널 (isReachStart)비활성화활성화
중간 패널활성화활성화
마지막 패널 (isReachEnd)활성화비활성화

상세 설명

동작 원리

  • isReachStarttrue일 때 이전 버튼을 비활성화
  • isReachEndtrue일 때 다음 버튼을 비활성화
  • 이전 클릭: moveTo(currentPanelIndex - 1)
  • 다음 클릭: moveTo(currentPanelIndex + 1)
  • 사용자가 드래그하여 새 패널로 이동하면 버튼 상태가 자동으로 동기화

관련 옵션

  • circular: true: 순환 모드에서는 isReachStartisReachEnd가 항상 false이므로 두 버튼 모두 항상 활성화 상태를 유지합니다.

사용 시나리오

이런 경우에 사용하세요
  • 드래그 조작이 잘 인지되지 않는 데스크톱 캐러셀
  • 접근성(a11y) 키보드/버튼 네비게이션
  • 터치가 비활성화된 환경

관련 링크

관련 API

관련 데모