MotionList
Una lista a partire dai dati che anima solo ciò che è cambiato.
WebReact NativeListe
Provalo
Preparazione dell’esempio…
L’uso più breve
<MotionList as="ul" items={todos} renderItem={(todo) => <TodoRow todo={todo} />} />;Di che cosa si occupa al posto tuo
- I nuovi elementi entrano con uno sfalsamento limitato mentre quelli intatti restano fermi.
- Gli elementi rimossi escono dal flusso e si animano in uscita dov’erano, mentre gli altri scivolano a chiudere il vuoto.
- Gli elementi riordinati scivolano nelle nuove posizioni.
- Gli spostamenti interrotti da un’altra modifica conservano la loro velocità.
present={false}anima l’uscita di tutti gli elementi, eplayKeyriproduce di nuovo l’entrata.
Usalo per
- Una lista di cose da fare.
- Risultati di ricerca filtrati.
- Un carrello.
Props
| Prop | Tipo | Predefinito | Descrizione |
|---|---|---|---|
items | readonly T[] | —obbligatoria | Il tuo array di dati. |
getKey | (item) => string | number | item.id | Restituisce una key unica e stabile per un elemento. Di default è item.id, oppure l’elemento stesso per stringhe e numeri. |
renderItem | (item, index) => ReactNode | item.label | Disegna un elemento. |
as | element | 'div' | L’elemento da renderizzare. |
itemAs | element | 'li' | 'div' | L’elemento per ogni voce. |
itemClassName | string | Classe per l’elemento di ogni voce; itemStyle imposta il suo stile inline. | |
effect | 'rise' | 'fade' | 'scale' | 'slide' | 'rise' | Come entrano ed escono gli elementi. |
distance | number | 16 | Percorso di rise e slide, in pixel. |
stagger | number | 40 | Millisecondi tra gli elementi che entrano. |
order | 'forward' | 'reverse' | 'forward' | Direzione dello sfalsamento. |
present | boolean | true | false anima l’uscita di tutti gli elementi mantenendo il layout; true li fa tornare. |
initial | boolean | true | Riproduce l’entrata quando la lista viene montata. |
playKey | string | number | Cambiarla riproduce di nuovo l’entrata. | |
transition | Transition | spring | Transizione per gli elementi che entrano ed escono. |
layoutTransition | Transition | spring | Transizione per gli elementi che scivolano nelle nuove posizioni. |
Le altre props vanno all’elemento renderizzato, quindi className, style e gli event handler funzionano come sempre.
Web e React Native
Ogni elemento riceve un elemento wrapper (li dentro ul o ol, altrimenti div; itemAs lo cambia) stilizzato con itemClassName.
Le key devono essere uniche. Avvolgi la lista in MotionHeight per animare anche la sua altezza totale.
Usato in questi esempi
- Risposta in chatSuggerimenti che si richiudono, una risposta che arriva in streaming a ritmo costante e una riga di stato che si scambia.
MotionStreamMotionListMotionSwapMotionHeight - Riepilogo del checkoutQuantità, totali di riga e totale scorrono man mano che il carrello cambia; l’avviso del coupon entra ed esce; pagare richiede di tenere premuto di proposito.
MotionListMotionNumberMotionPresenceMotionHold - Posta in arrivoTab di filtro con conteggi dal vivo, righe da scartare con lo swipe e una lista che chiude il vuoto.
MotionHighlightMotionListMotionSwipeMotionNumber