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
<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, etplayKeyrejoue l’entrée.
À utiliser pour
- Une liste de tâches.
- Des résultats de recherche filtrés.
- Un panier d’achat.
Props
| Prop | Type | Défaut | Description |
|---|---|---|---|
items | readonly T[] | —obligatoire | Votre tableau de données. |
getKey | (item) => string | number | item.id | Renvoie 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) => ReactNode | item.label | Dessine un élément. |
as | element | 'div' | L’élément à rendre. |
itemAs | element | 'li' | 'div' | L’élément de chaque item. |
itemClassName | string | Classe 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. |
distance | number | 16 | Déplacement de rise et slide, en pixels. |
stagger | number | 40 | Millisecondes entre les éléments entrants. |
order | 'forward' | 'reverse' | 'forward' | Sens du décalage. |
present | boolean | true | false fait sortir tous les éléments en gardant la mise en page ; true les fait revenir. |
initial | boolean | true | Jouer l’entrée au montage de la liste. |
playKey | string | number | Le modifier rejoue l’entrée. | |
transition | Transition | spring | Transition des éléments entrants et sortants. |
layoutTransition | Transition | spring | Transition 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
- Réponse de chatDes suggestions qui se replient, une réponse qui arrive à un rythme régulier et une ligne d’état qui change.
MotionStreamMotionListMotionSwapMotionHeight - Récapitulatif de commandeLes quantités, les totaux par ligne et le total défilent quand le panier change ; l’avis de code promo entre et sort ; payer demande un appui maintenu délibéré.
MotionListMotionNumberMotionPresenceMotionHold - Boîte de réceptionDes onglets de filtre avec des compteurs en direct, des lignes à balayer et une liste qui comble le vide.
MotionHighlightMotionListMotionSwipeMotionNumber