모든 컴포넌트
MotionReorder
끌어서 순서를 바꾸는 목록과 격자. 키보드도 지원합니다.
웹React Native목록
직접 해 보기
가장 짧은 사용법
Playlist.jsx<MotionReorder
items={tracks}
onItemsChange={setTracks}
layout="list"
renderItem={(track) => track.title}
/>;
대신 처리하는 일
- 끄는 동안(
reorder="live") 또는 놓은 뒤(reorder="drop") 다른 항목이 비켜 줍니다. columns와 gap으로 목록과 격자 배치를 씁니다.- 웹에서는 키보드로 옮기고, React Native에서는 접근성 동작으로 옮깁니다.
items와 onItemsChange로 제어하거나 defaultItems로 맡길 수 있습니다.
이럴 때 쓰세요
- 재생 목록.
- 우선순위가 있는 백로그.
- 사진 격자.
Props
| Prop | 타입 | 기본값 | 설명 |
|---|
items | readonly T[] | | 순서를 직접 제어할 때의 항목. |
|---|
defaultItems | readonly T[] | [] | 컴포넌트가 순서를 관리할 때의 시작 항목. |
|---|
onItemsChange | (items, { reason, key }) => void | | 새 순서와, 변경이 드래그·놓기·키보드 중 어디서 왔는지로 실행됩니다. |
|---|
getKey | (item) => string | number | item | 항목의 고유한 키를 돌려줍니다. 기본값은 항목 자체입니다. |
|---|
renderItem | (item, { index, dragging }) => ReactNode | item.label | 항목을 그립니다. 인덱스와 끌리는 중인지를 받습니다. |
|---|
reorder | 'live' | 'drop' | 'live' | live는 끄는 동안 다른 항목을 옮기고, drop은 놓을 때까지 기다립니다. |
|---|
layout | 'list' | 'grid' | 'grid' | list 또는 grid. |
|---|
columns | number | 3 | 격자의 열 수. |
|---|
gap | number | 12 | 항목 사이 간격(픽셀). |
|---|
disabled | boolean | false | 끌기를 끕니다. |
|---|
duration | number | 260 | 비켜 주는 항목의 이동 시간(밀리초). |
|---|
itemClassName | string | | 각 항목 요소의 클래스. 인라인 스타일은 itemStyle. |
|---|
그 밖의 props는 그려지는 요소로 전달되므로 className, style, 이벤트 핸들러를 평소처럼 쓸 수 있습니다.