Todos los componentes

MotionPager

Páginas deslizables a partir de datos: onboarding, carruseles y paneles de pestañas.

WebReact NativeSelección y paginación

Pruébalo

Preparando el ejemplo…

Uso mínimo

Onboarding.jsx
<MotionPager
  items={slides}
  index={page}
  onIndexChange={setPage}
  gap={16}
  renderItem={(slide) => <Slide slide={slide} />}
/>;

Lo que resuelve por ti

  • Las páginas siguen los deslizamientos y los arrastres con el ratón, ofrecen resistencia en los extremos y se asientan con la velocidad con la que sueltas.
  • Un gesto rápido siempre pasa una página, y un solo gesto nunca pasa más de una.
  • El scroll horizontal del trackpad también pasa páginas, y se ignora su inercia final.
  • Las flechas, Inicio y Fin funcionan cuando el paginador tiene el foco, y el scroll vertical sigue funcionando.
  • Las páginas que no están activas son inertes.

Úsalo para

  • Un flujo de onboarding.
  • Un carrusel de fotos.
  • Paneles de pestañas deslizables junto con MotionHighlight.

Props

PropTipoPor defectoDescripción
itemsreadonly T[]—obligatoriaTu array de datos.
indexnumberLa página que se muestra. Omítela para que el paginador la gestione.
defaultIndexnumber0Página inicial cuando index no está controlado.
onIndexChange(index, item) => voidSe ejecuta con el índice y el elemento en cuanto un deslizamiento, una tecla o la rueda se asientan.
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, { index, active }) => ReactNodeitem.labelDibuja una página; recibe su índice y si está activa.
gapnumber0Espacio entre páginas en píxeles.
itemClassNamestringClase para el elemento de cada ítem; itemStyle 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

index puede controlarse (onIndexChange(index, item) informa de cada asentamiento) o dejarse al paginador con defaultIndex.

El mismo componente y las mismas props funcionan en React Native.

Se usa en estos ejemplos

Buscar

Escribe para buscar en la documentación.