Alle Komponenten

MotionList

Eine Liste aus Daten, die nur das Geänderte animiert.

WebReact NativeListen

Ausprobieren

Beispiel wird vorbereitet…

Kürzeste Nutzung

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

Was sie dir abnimmt

  • Neue Elemente erscheinen mit begrenztem Versatz, während unberührte Elemente stillstehen.
  • Entfernte Elemente verlassen den Fluss und animieren dort hinaus, wo sie waren, während der Rest in die Lücke gleitet.
  • Umsortierte Elemente gleiten an ihre neue Position.
  • Durch eine andere Änderung unterbrochene Bewegungen behalten ihr Tempo.
  • present={false} animiert alle Elemente hinaus, und playKey spielt das Erscheinen erneut ab.

Gut für

  • Eine Todo-Liste.
  • Gefilterte Suchergebnisse.
  • Ein Warenkorb.

props

PropTypStandardBeschreibung
itemsreadonly T[]—erforderlichDein Daten-Array.
getKey(item) => string | numberitem.idGibt einen eindeutigen, stabilen Key für ein Element zurück. Standard ist item.id oder bei Strings und Zahlen das Element selbst.
renderItem(item, index) => ReactNodeitem.labelZeichnet ein Element.
aselement'div'Das zu rendernde Element.
itemAselement'li' | 'div'Das Element für jeden Eintrag.
itemClassNamestringKlasse für jedes Eintragselement; itemStyle setzt seinen Inline-Style.
effect'rise' | 'fade' | 'scale' | 'slide''rise'Wie Elemente kommen und gehen.
distancenumber16Weg von rise und slide in Pixeln.
staggernumber40Millisekunden zwischen erscheinenden Elementen.
order'forward' | 'reverse''forward'Richtung des Versatzes.
presentbooleantruefalse animiert alle Elemente hinaus und behält das Layout; true holt sie zurück.
initialbooleantrueDas Erscheinen abspielen, wenn die Liste gemountet wird.
playKeystring | numberEine Änderung spielt das Erscheinen erneut ab.
transitionTransitionspringÜbergang für erscheinende und verschwindende Elemente.
layoutTransitionTransitionspringÜbergang für Elemente, die an neue Positionen gleiten.

Weitere props gehen an das gerenderte Element, also funktionieren className, style und Event-Handler wie gewohnt.

Web und React Native

Jedes Element bekommt ein Wrapper-Element (li in ul oder ol, sonst div; itemAs ändert das), gestaltet mit itemClassName.

Keys müssen eindeutig sein. Umschließe die Liste mit MotionHeight, um auch ihre Gesamthöhe zu animieren.

Verwendet in diesen Beispielen

Suchen

Tippe, um die Dokumentation zu durchsuchen.