すべてのコンポーネント

MotionList

データから作り、変わったところだけをアニメーションするリスト。

WebReact Nativeリスト

試してみる

サンプルを準備中…

いちばん短い使い方

Todos.jsx
<MotionList as="ul" items={todos} renderItem={(todo) => <TodoRow todo={todo} />} />;

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

  • 新しい項目は上限付きの時間差で登場し、変わらない項目は静止したままです。
  • 削除された項目はレイアウトから外れて元の場所で退場し、残りの項目がすき間へスライドします。
  • 並び替えられた項目は新しい位置へすべるように移動します。
  • 別の変更で中断された移動は速度を保ちます。
  • present={false} はすべての項目を退場させ、playKey は登場をもう一度再生します。

こんなときに

  • ToDo リスト。
  • 絞り込んだ検索結果。
  • ショッピングカート。

props

Prop型デフォルト説明
itemsreadonly T[]—必須データの配列。
getKey(item) => string | numberitem.id項目の一意で安定した key を返します。デフォルトは item.id、文字列や数値なら項目そのものです。
renderItem(item, index) => ReactNodeitem.label項目を描画します。
aselement'div'描画する要素。
itemAselement'li' | 'div'各項目の要素。
itemClassNamestring各項目の要素のクラス。インラインスタイルは itemStyle で指定します。
effect'rise' | 'fade' | 'scale' | 'slide''rise'項目の出入りのしかた。
distancenumber16rise と slide の移動距離(ピクセル)。
staggernumber40登場する項目どうしの間隔(ミリ秒)。
order'forward' | 'reverse''forward'時間差の向き。
presentbooleantruefalse はレイアウトを保ったまますべての項目を退場させ、true で戻します。
initialbooleantrueリストのマウント時に登場を再生します。
playKeystring | number変えると登場をもう一度再生します。
transitionTransitionspring登場・退場する項目のトランジション。
layoutTransitionTransitionspring新しい位置へ移動する項目のトランジション。

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

Web と React Native

各項目にはラッパー要素が付き(ul や ol の中では li、それ以外は div。itemAs で変更可能)、itemClassName でスタイルを指定します。

key は一意でなければなりません。合計の高さもアニメーションさせるには、リストを MotionHeight で包みます。

使っているサンプル

検索

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