すべてのコンポーネント

MotionReorder

ドラッグでリストやグリッドを並べ替え。キーボードにも対応。

WebReact Nativeリスト

試してみる

サンプルを準備中…

いちばん短い使い方

Playlist.jsx
<MotionReorder
  items={tracks}
  onItemsChange={setTracks}
  layout="list"
  renderItem={(track) => track.title}
/>;

代わりに処理してくれること

  • ほかの項目は、ドラッグ中に(reorder="live")、またはドロップしたときに(reorder="drop")よけて動きます。
  • columns と gap で、リストとグリッドのレイアウトに対応。
  • Web ではキーボードで移動でき、React Native ではアクセシビリティアクションを提供します。
  • items と onItemsChange で制御するか、defaultItems で非制御にします。

こんなときに

  • プレイリスト。
  • 優先順位を付けたバックログ。
  • 写真のグリッド。

props

Prop型デフォルト説明
itemsreadonly T[]並び順を制御する場合の項目。
defaultItemsreadonly T[][]並び順をコンポーネントに任せる場合の最初の項目。
onItemsChange(items, { reason, key }) => void新しい並び順と、それがドラッグ、ドロップ、キーボードのどれによるものかを受け取って実行されます。
getKey(item) => string | numberitem項目の一意な key を返します。デフォルトは項目そのものです。
renderItem(item, { index, dragging }) => ReactNodeitem.label項目を描画します。インデックスと、ドラッグ中かどうかを受け取ります。
reorder'live' | 'drop''live'live はドラッグ中にほかの項目を動かし、drop はドロップを待ちます。
layout'list' | 'grid''grid'list または grid。
columnsnumber3グリッドの列数。
gapnumber12項目間の間隔(ピクセル)。
disabledbooleanfalseドラッグを無効にします。
durationnumber260ほかの項目がよけて動くときの時間(ミリ秒)。
itemClassNamestring各項目の要素のクラス。インラインスタイルは itemStyle で指定します。

ほかの props は描画される要素に渡るので、className、style、イベントハンドラーはいつもどおり使えます。

Web と React Native

onItemsChange(items, { reason }) は、変更がドラッグ、ドロップ、キーボードのどれによるものかを教えてくれます。

React Native でも同じ props が使え、並べ替えはアクセシビリティアクションとしても提供されます。

検索

入力するとドキュメントを検索します。