Todos os componentes

MotionList

Uma lista a partir de dados que anima só o que mudou.

WebReact NativeListas

Experimente

Preparando o exemplo…

Uso mais curto

Todos.jsx
<MotionList as="ul" items={todos} renderItem={(todo) => <TodoRow todo={todo} />} />;

O que ele resolve para você

  • Itens novos entram com escalonamento limitado enquanto os itens intocados ficam parados.
  • Itens removidos saem do fluxo e se animam para fora onde estavam, enquanto o resto desliza para fechar o espaço.
  • Itens reordenados deslizam até a nova posição.
  • Movimentos interrompidos por outra mudança mantêm a velocidade.
  • present={false} anima a saída de todos os itens, e playKey repete a entrada.

Use para

  • Uma lista de tarefas.
  • Resultados de busca filtrados.
  • Um carrinho de compras.

Props

PropTipoPadrãoDescrição
itemsreadonly T[]—obrigatóriaSeu array de dados.
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) => ReactNodeitem.labelDesenha um item.
aselement'div'O elemento a renderizar.
itemAselement'li' | 'div'O elemento de cada item.
itemClassNamestringClasse do elemento de cada item; itemStyle define o estilo inline.
effect'rise' | 'fade' | 'scale' | 'slide''rise'Como os itens entram e saem.
distancenumber16Percurso de rise e slide, em pixels.
staggernumber40Milissegundos entre os itens que entram.
order'forward' | 'reverse''forward'Direção do escalonamento.
presentbooleantruefalse anima a saída de todos os itens mantendo o layout; true os traz de volta.
initialbooleantrueReproduz a entrada quando a lista é montada.
playKeystring | numberMudá-lo repete a entrada.
transitionTransitionspringTransição dos itens que entram e saem.
layoutTransitionTransitionspringTransição dos itens que deslizam até novas posições.

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 ganha um elemento envolvente (li dentro de ul ou ol, senão div; itemAs muda isso) estilizado com itemClassName.

As keys precisam ser únicas. Envolva a lista em MotionHeight para animar também a altura total.

Usado nestes exemplos

Pesquisar

Digite para pesquisar na documentação.