MotionList
En lista från data som bara animerar det som ändrats.
WebbReact NativeListor
Prova
Förbereder exemplet…
Kortaste användning
<MotionList as="ul" items={todos} renderItem={(todo) => <TodoRow todo={todo} />} />;Det här sköter den åt dig
- Nya objekt kommer in med begränsad kaskad medan orörda objekt står still.
- Borttagna objekt lämnar flödet och animeras ut där de var medan resten glider in i luckan.
- Omsorterade objekt glider till sina nya platser.
- Förflyttningar som avbryts av en annan ändring behåller sin hastighet.
present={false}animerar ut alla objekt, ochplayKeyspelar upp intåget igen.
Använd den för
- En att göra-lista.
- Filtrerade sökresultat.
- En varukorg.
Props
| Prop | Typ | Standard | Beskrivning |
|---|---|---|---|
items | readonly T[] | —krävs | Din dataarray. |
getKey | (item) => string | number | item.id | Returnerar en unik, stabil nyckel för ett objekt. Standard är item.id, eller själva objektet för strängar och tal. |
renderItem | (item, index) => ReactNode | item.label | Ritar ett objekt. |
as | element | 'div' | Elementet som renderas. |
itemAs | element | 'li' | 'div' | Elementet för varje objekt. |
itemClassName | string | Klass för varje objektelement; itemStyle sätter dess inline-style. | |
effect | 'rise' | 'fade' | 'scale' | 'slide' | 'rise' | Hur objekt kommer in och lämnar. |
distance | number | 16 | Sträcka för rise och slide i pixlar. |
stagger | number | 40 | Millisekunder mellan inkommande objekt. |
order | 'forward' | 'reverse' | 'forward' | Kaskadens riktning. |
present | boolean | true | false animerar ut alla objekt och behåller layouten; true tar tillbaka dem. |
initial | boolean | true | Spela upp intåget när listan monteras. |
playKey | string | number | Att ändra den spelar upp intåget igen. | |
transition | Transition | spring | Övergång för objekt som kommer in och lämnar. |
layoutTransition | Transition | spring | Övergång för objekt som glider till nya platser. |
Andra props går till det renderade elementet, så className, style och händelsehanterare fungerar som vanligt.
Webb och React Native
Varje objekt får ett omslagselement (li inuti ul eller ol, annars div; itemAs ändrar det) som stylas med itemClassName.
Nycklar måste vara unika. Svep in listan i MotionHeight för att animera även dess totala höjd.
Används i de här exemplen
- ChattsvarFörslag som fälls ihop, ett svar som strömmar i jämn takt och en statusrad som byts.
MotionStreamMotionListMotionSwapMotionHeight - KassasammanfattningAntal, radsummor och totalen rullar när varukorgen ändras; rabattmeddelandet kommer och går; att betala kräver ett avsiktligt nedhållet tryck.
MotionListMotionNumberMotionPresenceMotionHold - InkorgFilterflikar med liveantal, rader som kan svepas bort och en lista som sluter luckan.
MotionHighlightMotionListMotionSwipeMotionNumber