L’élément se redimensionne de sa taille à l’écran vers la taille naturelle du nouveau contenu : les boutons ne sautent jamais.
L’ancien contenu s’estompe là où il était pendant que le nouveau apparaît ; aucun des deux ne se recompose pendant le changement.
Revenir en arrière en plein changement repart de ce qui est à l’écran au lieu d’empiler des copies.
Les enfants en texte brut sont leur propre value ; passez value pour tout le reste.
À utiliser pour
Enregistrer, puis Enregistrement…, puis Enregistré.
Un squelette qui devient une carte de profil.
Un bouton lecture qui devient pause.
Props
Prop
Type
Défaut
Description
value
unknown
Identité du contenu ; une nouvelle valeur déclenche le changement. Les enfants en texte brut sont leur propre identité.
children
ReactNode
Le contenu.
as
element
'span'
L’élément à rendre.
inline
boolean
as === 'span'
true dimensionne selon le contenu (libellés, icônes) ; false prend la largeur du parent et anime la hauteur.
align
'start' | 'center' | 'end'
'center'
Où se place le contenu pendant le changement de taille.
effect
'fade' | 'up' | 'down' | 'scale'
'fade'
Comment le contenu entre et sort : up monte, down descend, scale grandit.
transition
Transition
spring
Une courbe de temps { duration, easing } ou un ressort { tempo: 'spring', spring }. Les ressorts gardent leur élan quand ils sont interrompus.
onMotionComplete
(value) => void
S’exécute quand le mouvement se pose.
Les autres props vont à l’élément rendu : className, style et les gestionnaires d’événements fonctionnent comme d’habitude.
Web et React Native
inline (par défaut quand le rendu est un span) anime la largeur et la hauteur ; inline={false} prend la largeur du parent et anime la hauteur.
Sur React Native, les changements inline mesurent le nouveau contenu sur une seule ligne ; utilisez inline={false} pour un contenu qui passe à la ligne.