MotionList
En liste fra data som bare animerer det som endret seg.
WebReact NativeLister
Prøv det
Forbereder eksempelet …
Korteste bruk
<MotionList as="ul" items={todos} renderItem={(todo) => <TodoRow todo={todo} />} />;Dette tar den seg av
- Nye elementer kommer inn med begrenset kaskade mens urørte elementer står stille.
- Fjernede elementer forlater flyten og animeres ut der de var, mens resten glir inn i hullet.
- Omsorterte elementer glir til nye posisjoner.
- Flyttinger som avbrytes av en annen endring, beholder hastigheten.
present={false}animerer alle elementer ut, ogplayKeyspiller av inngangen på nytt.
Bruk den til
- En gjøremålsliste.
- Filtrerte søkeresultater.
- En handlekurv.
Props
| Prop | Type | Standard | Beskrivelse |
|---|---|---|---|
items | readonly T[] | —påkrevd | Data-arrayen din. |
getKey | (item) => string | number | item.id | Returnerer en unik, stabil nøkkel for et element. Standard er item.id, eller selve elementet for strenger og tall. |
renderItem | (item, index) => ReactNode | item.label | Tegner et element. |
as | element | 'div' | Elementet som renderes. |
itemAs | element | 'li' | 'div' | Elementet for hvert punkt. |
itemClassName | string | Klasse for hvert punkts element; itemStyle setter inline-stilen. | |
effect | 'rise' | 'fade' | 'scale' | 'slide' | 'rise' | Hvordan elementer kommer inn og forlater. |
distance | number | 16 | Avstand for rise og slide i piksler. |
stagger | number | 40 | Millisekunder mellom innkommende elementer. |
order | 'forward' | 'reverse' | 'forward' | Kaskadens retning. |
present | boolean | true | false animerer alle elementer ut og beholder layouten; true henter dem tilbake. |
initial | boolean | true | Spill av inngangen når listen monteres. |
playKey | string | number | Å endre den spiller av inngangen på nytt. | |
transition | Transition | spring | Overgang for elementer som kommer inn og forlater. |
layoutTransition | Transition | spring | Overgang for elementer som glir til nye posisjoner. |
Andre props går til det renderte elementet, så className, style og hendelseshåndterere fungerer som vanlig.
Web og React Native
Hvert element får et omslagselement (li inne i ul eller ol, ellers div; itemAs endrer det) som stiles med itemClassName.
Nøkler må være unike. Pakk inn listen i MotionHeight for også å animere totalhøyden.
Brukt i disse eksemplene
- ChattesvarForslag som lukkes, et svar som strømmer i jevnt tempo, og en statuslinje som byttes.
MotionStreamMotionListMotionSwapMotionHeight - KassesammendragAntall, linjesummer og totalen ruller når handlekurven endres; rabattmeldingen kommer og går; betaling krever et bevisst trykk og hold.
MotionListMotionNumberMotionPresenceMotionHold - InnboksFilterfaner med live-tall, rader som kan sveipes bort, og en liste som lukker hullet.
MotionHighlightMotionListMotionSwipeMotionNumber