Todos los componentes

MotionHighlight

Pestañas, controles segmentados o navegación a partir de datos, con un resaltado que viaja hasta la selección.

WebReact NativeSelección y paginación

Pruébalo

Preparando el ejemplo…

Uso mínimo

Tabs.jsx
<MotionHighlight
  items={['Overview', 'Activity', 'Settings']}
  value={tab}
  onValueChange={setTab}
  hover
/>;

Lo que resuelve por ti

  • Un único resaltado se mueve y cambia de tamaño entre elementos; dale estilo con highlightClassName.
  • Los elementos vienen de items, las keys de getKey y las etiquetas de renderItem.
  • hover hace que siga al puntero y vuelva a la selección.
  • Los elementos pueden ocupar varias filas y el resaltado los sigue.
  • La carga de fuentes y los cambios de layout se vuelven a medir automáticamente.

Úsalo para

  • Pestañas de una página.
  • Una barra de filtros.
  • Un control segmentado en un formulario de ajustes.

Props

PropTipoPor defectoDescripción
itemsreadonly T[]—obligatoriaTu array de datos.
valuekey | null—obligatoriaKey del elemento resaltado; null oculta el resaltado.
onValueChange(key, item) => voidSe ejecuta con la key y el elemento cuando se pulsa un elemento.
getKey(item) => string | numberitem.idDevuelve una key única y estable para un elemento. Por defecto item.id, o el propio elemento si es una cadena o un número.
renderItem(item, { selected, index }) => ReactNodeitem.labelDibuja un elemento; recibe si está seleccionado.
hoverbooleanfalseSigue al puntero sobre los elementos y vuelve a value al salir (web).
itemAselement'button'El elemento de cada ítem.
itemClassNamestringClase para el elemento de cada ítem; itemStyle fija su estilo en línea.
highlightClassNamestringClase para el resaltado; highlightStyle fija su estilo en línea.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.

Las demás props van al elemento renderizado, así que className, style y los manejadores de eventos funcionan como siempre.

Web y React Native

Cada elemento se renderiza como un button por defecto (itemAs lo cambia); al pulsarlo se llama a onValueChange(key, item).

En React Native los elementos son Pressable; la posición va con el driver nativo y el tamaño con una vista anidada controlada por JavaScript.

Se usa en estos ejemplos

Buscar

Escribe para buscar en la documentación.