Tutti i componenti

MotionList

Una lista a partire dai dati che anima solo ciò che è cambiato.

WebReact NativeListe

Provalo

Preparazione dell’esempio…

L’uso più breve

Todos.jsx
<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, e playKey riproduce di nuovo l’entrata.

Usalo per

  • Una lista di cose da fare.
  • Risultati di ricerca filtrati.
  • Un carrello.

Props

PropTipoPredefinitoDescrizione
itemsreadonly T[]—obbligatoriaIl tuo array di dati.
getKey(item) => string | numberitem.idRestituisce una key unica e stabile per un elemento. Di default è item.id, oppure l’elemento stesso per stringhe e numeri.
renderItem(item, index) => ReactNodeitem.labelDisegna un elemento.
aselement'div'L’elemento da renderizzare.
itemAselement'li' | 'div'L’elemento per ogni voce.
itemClassNamestringClasse per l’elemento di ogni voce; itemStyle imposta il suo stile inline.
effect'rise' | 'fade' | 'scale' | 'slide''rise'Come entrano ed escono gli elementi.
distancenumber16Percorso di rise e slide, in pixel.
staggernumber40Millisecondi tra gli elementi che entrano.
order'forward' | 'reverse''forward'Direzione dello sfalsamento.
presentbooleantruefalse anima l’uscita di tutti gli elementi mantenendo il layout; true li fa tornare.
initialbooleantrueRiproduce l’entrata quando la lista viene montata.
playKeystring | numberCambiarla riproduce di nuovo l’entrata.
transitionTransitionspringTransizione per gli elementi che entrano ed escono.
layoutTransitionTransitionspringTransizione 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

Cerca

Scrivi per cercare nella documentazione.