Tous les composants

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

Tabs.jsx
<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 de getKey et les libellés de renderItem.
  • hover lui 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

PropTypeDéfautDescription
itemsreadonly T[]—obligatoireVotre tableau de données.
valuekey | null—obligatoireKey de l’élément surligné ; null masque le surlignage.
onValueChange(key, item) => voidS’exécute avec la key et l’élément quand un élément est pressé.
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, { selected, index }) => ReactNodeitem.labelDessine un élément ; reçoit s’il est sélectionné.
hoverbooleanfalseSuit le pointeur sur les éléments et revient à value à la sortie (web).
itemAselement'button'L’élément de chaque item.
itemClassNamestringClasse de l’élément de chaque item ; itemStyle définit son style en ligne.
highlightClassNamestringClasse du surlignage ; highlightStyle définit son style en ligne.
transitionTransitionspringUne 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

Rechercher

Tapez pour rechercher dans la documentation.