Todos os componentes

MotionHighlight

Abas, controles segmentados ou navegação a partir de dados, com um destaque que viaja até a seleção.

WebReact NativeSeleção e paginação

Experimente

Preparando o exemplo…

Uso mais curto

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

O que ele resolve para você

  • Um destaque se move e muda de tamanho entre os itens; estilize com highlightClassName.
  • Os itens vêm de items, as keys de getKey e os rótulos de renderItem.
  • hover faz o destaque seguir o ponteiro e voltar para a seleção.
  • Os itens podem quebrar em várias linhas, e o destaque acompanha.
  • O carregamento de fontes e as mudanças de layout são medidos de novo automaticamente.

Use para

  • Abas de página.
  • Uma barra de filtros.
  • Um controle segmentado em um formulário de configurações.

Props

PropTipoPadrãoDescrição
itemsreadonly T[]—obrigatóriaSeu array de dados.
valuekey | null—obrigatóriaKey do item destacado; null esconde o destaque.
onValueChange(key, item) => voidRoda com a key e o item quando um item é pressionado.
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, { selected, index }) => ReactNodeitem.labelDesenha um item; recebe se ele está selecionado.
hoverbooleanfalseSegue o ponteiro sobre os itens e volta para value ao sair (web).
itemAselement'button'O elemento de cada item.
itemClassNamestringClasse do elemento de cada item; itemStyle define o estilo inline.
highlightClassNamestringClasse do destaque; highlightStyle 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

Cada item é renderizado como button por padrão (itemAs muda isso); apertá-lo chama onValueChange(key, item).

No React Native, os itens são Pressables; a posição roda no driver nativo e o tamanho em uma view aninhada controlada por JavaScript.

Usado nestes exemplos

Pesquisar

Digite para pesquisar na documentação.