모든 컴포넌트
MotionPager
데이터로 만드는 넘기는 페이지. 온보딩, 캐러셀, 탭 패널.
웹React Native선택과 넘기기
직접 해 보기
가장 짧은 사용법
Onboarding.jsx<MotionPager
items={slides}
index={page}
onIndexChange={setPage}
gap={16}
renderItem={(slide) => <Slide slide={slide} />}
/>;
대신 처리하는 일
- 페이지가 스와이프와 마우스 드래그를 따라오고, 양 끝에서 버티며, 손을 뗀 속도로 멈춥니다.
- 빠르게 튕기면 항상 한 장 넘어가고, 한 번의 동작으로 두 장 이상 넘어가지 않습니다.
- 가로 트랙패드 스크롤로도 넘어가며, 관성 꼬리는 무시합니다.
- 포커스가 있으면 방향키, Home, End가 동작하고 세로 스크롤은 그대로입니다.
- 현재 페이지가 아닌 페이지는 비활성입니다.
이럴 때 쓰세요
- 온보딩 흐름.
- 사진 캐러셀.
MotionHighlight와 짝을 이룬 넘기는 탭 패널.
Props
| Prop | 타입 | 기본값 | 설명 |
|---|
items | readonly T[] | —필수 | 내 데이터 배열. |
|---|
index | number | | 보여 줄 페이지. 생략하면 페이저가 직접 관리합니다. |
|---|
defaultIndex | number | 0 | index를 제어하지 않을 때의 시작 페이지. |
|---|
onIndexChange | (index, item) => void | | 스와이프, 키, 휠 동작이 멈추는 즉시 인덱스와 항목으로 실행됩니다. |
|---|
getKey | (item) => string | number | item.id | 항목의 고유하고 안정적인 키를 돌려줍니다. 기본값은 item.id, 문자열과 숫자는 그 값 자체입니다. |
|---|
renderItem | (item, { index, active }) => ReactNode | item.label | 페이지를 그립니다. 인덱스와 현재 페이지 여부를 받습니다. |
|---|
gap | number | 0 | 페이지 사이 간격(픽셀). |
|---|
itemClassName | string | | 각 항목 요소의 클래스. 인라인 스타일은 itemStyle. |
|---|
transition | Transition | spring | 시간 곡선 { duration, easing } 또는 스프링 { tempo: 'spring', spring }. 스프링은 끊겨도 속도를 이어갑니다. |
|---|
그 밖의 props는 그려지는 요소로 전달되므로 className, style, 이벤트 핸들러를 평소처럼 쓸 수 있습니다.