Todos os componentes

MotionPager

Páginas deslizáveis a partir de dados: onboarding, carrosséis e painéis de abas.

WebReact NativeSeleção e paginação

Experimente

Preparando o exemplo…

Uso mais curto

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

O que ele resolve para você

  • As páginas seguem os deslizes e o arraste com o mouse, oferecem resistência nas pontas e se acomodam com a velocidade com que você solta.
  • Um gesto rápido sempre vira uma página, e um gesto nunca vira mais de uma.
  • A rolagem horizontal do trackpad também vira páginas, e a inércia final é ignorada.
  • Setas, Home e End funcionam quando o paginador tem foco, e a rolagem vertical continua funcionando.
  • As páginas que não estão ativas ficam inertes.

Use para

  • Um fluxo de onboarding.
  • Um carrossel de fotos.
  • Painéis de abas deslizáveis junto com MotionHighlight.

Props

PropTipoPadrãoDescrição
itemsreadonly T[]—obrigatóriaSeu array de dados.
indexnumberA página exibida. Omita para o paginador cuidar da própria.
defaultIndexnumber0Página inicial quando index não é controlado.
onIndexChange(index, item) => voidRoda com o índice e o item assim que um deslize, uma tecla ou a roda do mouse se acomoda.
getKey(item) => string | numberitem.idRetorna uma key única e estável para um item. Por padrão item.id, ou o próprio item para strings e números.
renderItem(item, { index, active }) => ReactNodeitem.labelDesenha uma página; recebe o índice e se ela está ativa.
gapnumber0Espaço entre as páginas, em pixels.
itemClassNamestringClasse do elemento de cada item; itemStyle define o estilo inline.
transitionTransitionspringUma curva de tempo { duration, easing } ou uma mola { tempo: 'spring', spring }. As molas mantêm o embalo quando interrompidas.

As outras props vão para o elemento renderizado, então className, style e handlers de eventos funcionam normalmente.

Web e React Native

index pode ser controlado (onIndexChange(index, item) informa cada parada) ou ficar com o paginador via defaultIndex.

O mesmo componente e as mesmas props funcionam no React Native.

Usado nestes exemplos

Pesquisar

Digite para pesquisar na documentação.