MotionList
Eine Liste aus Daten, die nur das Geänderte animiert.
WebReact NativeListen
Ausprobieren
Beispiel wird vorbereitet…
Kürzeste Nutzung
<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, undplayKeyspielt das Erscheinen erneut ab.
Gut für
- Eine Todo-Liste.
- Gefilterte Suchergebnisse.
- Ein Warenkorb.
props
| Prop | Typ | Standard | Beschreibung |
|---|---|---|---|
items | readonly T[] | —erforderlich | Dein Daten-Array. |
getKey | (item) => string | number | item.id | Gibt 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) => ReactNode | item.label | Zeichnet ein Element. |
as | element | 'div' | Das zu rendernde Element. |
itemAs | element | 'li' | 'div' | Das Element für jeden Eintrag. |
itemClassName | string | Klasse für jedes Eintragselement; itemStyle setzt seinen Inline-Style. | |
effect | 'rise' | 'fade' | 'scale' | 'slide' | 'rise' | Wie Elemente kommen und gehen. |
distance | number | 16 | Weg von rise und slide in Pixeln. |
stagger | number | 40 | Millisekunden zwischen erscheinenden Elementen. |
order | 'forward' | 'reverse' | 'forward' | Richtung des Versatzes. |
present | boolean | true | false animiert alle Elemente hinaus und behält das Layout; true holt sie zurück. |
initial | boolean | true | Das Erscheinen abspielen, wenn die Liste gemountet wird. |
playKey | string | number | Eine Änderung spielt das Erscheinen erneut ab. | |
transition | Transition | spring | Übergang für erscheinende und verschwindende Elemente. |
layoutTransition | Transition | spring | Ü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
- Chat-AntwortVorschläge, die sich einklappen, eine Antwort, die gleichmäßig hereinströmt, und eine Statuszeile, die wechselt.
MotionStreamMotionListMotionSwapMotionHeight - Checkout-ÜbersichtMengen, Zeilensummen und die Gesamtsumme rollen, wenn sich der Warenkorb ändert; der Gutscheinhinweis erscheint und verschwindet; Bezahlen erfordert bewusstes Halten.
MotionListMotionNumberMotionPresenceMotionHold - PosteingangFilter-Tabs mit Live-Zählern, Zeilen zum Wegwischen und eine Liste, die die Lücke schließt.
MotionHighlightMotionListMotionSwipeMotionNumber