すべてのコンポーネント
MotionList
データから作り、変わったところだけをアニメーションするリスト。
WebReact Nativeリスト
試してみる
いちばん短い使い方
Todos.jsx<MotionList as="ul" items={todos} renderItem={(todo) => <TodoRow todo={todo} />} />;
代わりに処理してくれること
- 新しい項目は上限付きの時間差で登場し、変わらない項目は静止したままです。
- 削除された項目はレイアウトから外れて元の場所で退場し、残りの項目がすき間へスライドします。
- 並び替えられた項目は新しい位置へすべるように移動します。
- 別の変更で中断された移動は速度を保ちます。
present={false} はすべての項目を退場させ、playKey は登場をもう一度再生します。
こんなときに
- ToDo リスト。
- 絞り込んだ検索結果。
- ショッピングカート。
props
| Prop | 型 | デフォルト | 説明 |
|---|
items | readonly T[] | —必須 | データの配列。 |
|---|
getKey | (item) => string | number | item.id | 項目の一意で安定した key を返します。デフォルトは item.id、文字列や数値なら項目そのものです。 |
|---|
renderItem | (item, index) => ReactNode | item.label | 項目を描画します。 |
|---|
as | element | 'div' | 描画する要素。 |
|---|
itemAs | element | 'li' | 'div' | 各項目の要素。 |
|---|
itemClassName | string | | 各項目の要素のクラス。インラインスタイルは itemStyle で指定します。 |
|---|
effect | 'rise' | 'fade' | 'scale' | 'slide' | 'rise' | 項目の出入りのしかた。 |
|---|
distance | number | 16 | rise と slide の移動距離(ピクセル)。 |
|---|
stagger | number | 40 | 登場する項目どうしの間隔(ミリ秒)。 |
|---|
order | 'forward' | 'reverse' | 'forward' | 時間差の向き。 |
|---|
present | boolean | true | false はレイアウトを保ったまますべての項目を退場させ、true で戻します。 |
|---|
initial | boolean | true | リストのマウント時に登場を再生します。 |
|---|
playKey | string | number | | 変えると登場をもう一度再生します。 |
|---|
transition | Transition | spring | 登場・退場する項目のトランジション。 |
|---|
layoutTransition | Transition | spring | 新しい位置へ移動する項目のトランジション。 |
|---|
ほかの props は描画される要素に渡るので、className、style、イベントハンドラーはいつもどおり使えます。