MotionList
En liste fra data, der kun animerer det, der ændrede sig.
WebReact NativeLister
Prøv det
Forbereder eksemplet…
Korteste brug
<MotionList as="ul" items={todos} renderItem={(todo) => <TodoRow todo={todo} />} />;Det klarer den for dig
- Nye elementer kommer ind med en begrænset kaskade, mens uberørte elementer står stille.
- Fjernede elementer forlader flowet og animeres ud, hvor de var, mens resten glider ind i hullet.
- Omsorterede elementer glider til deres nye positioner.
- Flytninger, der afbrydes af en anden ændring, bevarer deres hastighed.
present={false}animerer alle elementer ud, ogplayKeyafspiller indgangen igen.
Brug den til
- En opgaveliste.
- Filtrerede søgeresultater.
- En indkøbskurv.
Props
| Prop | Type | Standard | Beskrivelse |
|---|---|---|---|
items | readonly T[] | —påkrævet | Dit data-array. |
getKey | (item) => string | number | item.id | Returnerer en unik, stabil nøgle for et element. Standard er item.id, eller selve elementet for strenge og tal. |
renderItem | (item, index) => ReactNode | item.label | Tegner et element. |
as | element | 'div' | Elementet, der renderes. |
itemAs | element | 'li' | 'div' | Elementet for hvert punkt. |
itemClassName | string | Klasse for hvert punkts element; itemStyle sætter dets inline-style. | |
effect | 'rise' | 'fade' | 'scale' | 'slide' | 'rise' | Hvordan elementer kommer ind og forlader. |
distance | number | 16 | Afstand for rise og slide i pixels. |
stagger | number | 40 | Millisekunder mellem indkommende elementer. |
order | 'forward' | 'reverse' | 'forward' | Kaskadens retning. |
present | boolean | true | false animerer alle elementer ud og bevarer layoutet; true bringer dem tilbage. |
initial | boolean | true | Afspil indgangen, når listen monteres. |
playKey | string | number | At ændre den afspiller indgangen igen. | |
transition | Transition | spring | Overgang til elementer, der kommer ind og forlader. |
layoutTransition | Transition | spring | Overgang til elementer, der glider til nye positioner. |
Andre props går til det renderede element, så className, style og event handlers virker som normalt.
Web og React Native
Hvert element får et wrapper-element (li inde i ul eller ol, ellers div; itemAs ændrer det), der styles med itemClassName.
Nøgler skal være unikke. Indpak listen i MotionHeight for også at animere dens samlede højde.
Brugt i disse eksempler
- ChatsvarForslag, der foldes sammen, et svar, der streamer i et jævnt tempo, og en statuslinje, der skifter.
MotionStreamMotionListMotionSwapMotionHeight - KasseoversigtAntal, linjetotaler og totalen ruller, når kurven ændrer sig; rabatbeskeden kommer og går; at betale kræver et bevidst tryk og hold.
MotionListMotionNumberMotionPresenceMotionHold - IndbakkeFilterfaner med live-tal, rækker, der kan swipes væk, og en liste, der lukker hullet.
MotionHighlightMotionListMotionSwipeMotionNumber