Tous les composants

MotionList

Une liste à partir de données qui n’anime que ce qui a changé.

WebReact NativeListes

Essayer

Préparation de l’exemple…

Usage minimal

Todos.jsx
<MotionList as="ul" items={todos} renderItem={(todo) => <TodoRow todo={todo} />} />;

Ce qu’il gère pour vous

  • Les nouveaux éléments entrent avec un décalage borné tandis que les éléments inchangés restent immobiles.
  • Les éléments retirés quittent le flux et sortent en s’animant là où ils étaient, pendant que les autres glissent pour combler le vide.
  • Les éléments réordonnés glissent vers leur nouvelle position.
  • Les déplacements interrompus par un autre changement gardent leur vitesse.
  • present={false} fait sortir tous les éléments, et playKey rejoue l’entrée.

À utiliser pour

  • Une liste de tâches.
  • Des résultats de recherche filtrés.
  • Un panier d’achat.

Props

PropTypeDéfautDescription
itemsreadonly T[]—obligatoireVotre tableau de données.
getKey(item) => string | numberitem.idRenvoie une key unique et stable pour un élément. Par défaut item.id, ou l’élément lui-même pour les chaînes et les nombres.
renderItem(item, index) => ReactNodeitem.labelDessine un élément.
aselement'div'L’élément à rendre.
itemAselement'li' | 'div'L’élément de chaque item.
itemClassNamestringClasse de l’élément de chaque item ; itemStyle définit son style en ligne.
effect'rise' | 'fade' | 'scale' | 'slide''rise'Comment les éléments entrent et sortent.
distancenumber16Déplacement de rise et slide, en pixels.
staggernumber40Millisecondes entre les éléments entrants.
order'forward' | 'reverse''forward'Sens du décalage.
presentbooleantruefalse fait sortir tous les éléments en gardant la mise en page ; true les fait revenir.
initialbooleantrueJouer l’entrée au montage de la liste.
playKeystring | numberLe modifier rejoue l’entrée.
transitionTransitionspringTransition des éléments entrants et sortants.
layoutTransitionTransitionspringTransition des éléments qui glissent vers une nouvelle position.

Les autres props vont à l’élément rendu : className, style et les gestionnaires d’événements fonctionnent comme d’habitude.

Web et React Native

Chaque élément reçoit un élément d’enveloppe (li dans ul ou ol, sinon div ; itemAs le change) stylé avec itemClassName.

Les keys doivent être uniques. Enveloppez la liste dans MotionHeight pour animer aussi sa hauteur totale.

Utilisé dans ces exemples

Rechercher

Tapez pour rechercher dans la documentation.