MotionHighlight
Onglets, contrôles segmentés ou navigation à partir de données, avec un surlignage unique qui se déplace vers la sélection.
WebReact NativeSélection et pagination
Essayer
Préparation de l’exemple…
Usage minimal
<MotionHighlight
items={['Overview', 'Activity', 'Settings']}
value={tab}
onValueChange={setTab}
hover
/>;Ce qu’il gère pour vous
- Un seul surlignage se déplace et se redimensionne entre les éléments ; stylez-le avec
highlightClassName. - Les éléments viennent de
items, les keys degetKeyet les libellés derenderItem. hoverlui fait suivre le pointeur puis revenir à la sélection.- Les éléments peuvent s’étaler sur plusieurs lignes et le surlignage les suit.
- Le chargement des polices et les changements de mise en page sont remesurés automatiquement.
À utiliser pour
- Les onglets d’une page.
- Une barre de filtres.
- Un contrôle segmenté dans un formulaire de réglages.
Props
| Prop | Type | Défaut | Description |
|---|---|---|---|
items | readonly T[] | —obligatoire | Votre tableau de données. |
value | key | null | —obligatoire | Key de l’élément surligné ; null masque le surlignage. |
onValueChange | (key, item) => void | S’exécute avec la key et l’élément quand un élément est pressé. | |
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, { selected, index }) => ReactNode | item.label | Dessine un élément ; reçoit s’il est sélectionné. |
hover | boolean | false | Suit le pointeur sur les éléments et revient à value à la sortie (web). |
itemAs | element | 'button' | L’élément de chaque item. |
itemClassName | string | Classe de l’élément de chaque item ; itemStyle définit son style en ligne. | |
highlightClassName | string | Classe du surlignage ; highlightStyle définit son style en ligne. | |
transition | Transition | spring | Une courbe de temps { duration, easing } ou un ressort { tempo: 'spring', spring }. Les ressorts gardent leur élan quand ils sont interrompus. |
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 est rendu comme un button par défaut (itemAs le change) ; un appui appelle onValueChange(key, item).
Sur React Native, les éléments sont des Pressable ; la position passe par le driver natif et la taille par une vue imbriquée pilotée en JavaScript.
Utilisé dans ces exemples
- Boîte de réceptionDes onglets de filtre avec des compteurs en direct, des lignes à balayer et une liste qui comble le vide.
MotionHighlightMotionListMotionSwipeMotionNumber - Fil de photosFaites défiler les photos, sautez de l’une à l’autre avec les vignettes, ouvrez n’importe quelle photo en plein écran et remontez ses détails.
MotionPagerMotionHighlightMotionZoomMotionSheet