React Academy · Aula

Animações orientadas por gestos com use-gesture

Combine react-spring com @use-gesture/react para criar animações controladas por arraste, pinça e rolagem.

Aula 4 de 413 etapas

Animações orientadas por gestos com use-gesture é uma aula grátis de React Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

Visão geral de @use-gesture/react

@use-gesture/react é uma biblioteca de reconhecimento de gestos projetada para funcionar perfeitamente com react-spring. Ela reconhece gestos de arrastar, pinçar, rolar, passar o cursor, mover e girar a roda, fornecendo um estado de gesto normalizado que pode ser encaminhado diretamente às funções de atualização da mola para criar interações fluidas baseadas em física.

Estado do gesto useDrag

O gancho useDrag dispara uma função de retorno de chamada a cada evento de arrastar. A função recebe um objeto de estado do gesto com propriedades principais: movement (deslocamento total desde o início do arrasto), velocity (velocidade atual), direction (1 ou -1 em cada eixo), first (true no início do arrasto), last (true no fim do arrasto) e event (o evento bruto do DOM).

A função bind()

Todos os ganchos de use-gesture retornam uma função bind(). Chamar bind() retorna um objeto de propriedades de manipuladores de eventos (onPointerDown, onTouchStart etc.) que você expande no elemento que deseja tornar interativo. Esse é o ponto de ligação entre o reconhecedor de gestos e o seu elemento do DOM.

Combinando useDrag com react-spring

O padrão comum é criar uma mola com a API imperativa ([springs, api] = useSpring(...)) e então usar useDrag para chamar api.start({ x: movement[0], y: movement[1] }) a cada evento de arrasto. A mola acompanha suavemente o movimento do arrasto, adicionando uma física natural ao que, de outra forma, seria um rastreamento rígido do cursor.

Voltar ao soltar

Quando um arrasto termina (last: true no estado do gesto), normalmente você faz o elemento voltar à origem. Chame api.start({ x: 0, y: 0 }) dentro de uma verificação if (last). O react-spring anima o retorno com física de mola — um salto suave em vez de uma redefinição instantânea — proporcionando uma sensação física agradável à interação.

Arremesso e lançamento com velocidade

O valor de velocity no estado do gesto permite criar um comportamento de arremesso. Quando o usuário solta o elemento com alta velocidade, você pode lançá-lo na direção do arrasto em vez de fazê-lo voltar. Verifique if (last && velocity[0] > threshold) e então anime o elemento até sua posição final fora da tela. Isso é essencial para interações de deslizar para dispensar.

Limites e contenção do arrasto

Para restringir o movimento de arrasto dentro de um contêiner, limite os valores de movimento antes de passá-los à mola: x: Math.max(-maxX, Math.min(maxX, movement[0])). Como alternativa, use a opção bounds integrada ao use-gesture: useDrag(handler, { bounds: { left: -100, right: 100 } }) para limitar automaticamente o estado do gesto.

Padrão de deslizar para dispensar

Uma implementação móvel de deslizar para dispensar: use useDrag para acompanhar o movimento horizontal. Se o usuário soltar o elemento com velocidade acima de um limite OR tiver percorrido mais da metade da largura da tela, anime o cartão para fora da tela (api.start({ x: window.innerWidth })) e depois remova-o da lista. Caso contrário, faça-o voltar ao centro.

usePinch para interações de ampliação

usePinch reconhece gestos de pinça com dois dedos em telas sensíveis ao toque e Ctrl+roda do mouse no computador. O estado do gesto inclui scale (nível atual de ampliação em relação ao início da pinça) e origin (ponto central da pinça). Conecte-o a uma mola que acompanhe a escala para criar interações de ampliação suaves e limitadas em imagens ou mapas.

useHover e useMove

useHover é acionado quando o ponteiro entra ou sai de um elemento, fornecendo um valor booleano active. useMove acompanha a posição do mouse dentro de um elemento, fornecendo coordenadas normalizadas. Ambos são úteis para efeitos magnéticos ao passar o cursor, nos quais os elementos se deslocam sutilmente em direção ao cursor conforme ele se aproxima.

Combinando vários gestos

Os ganchos de use-gesture podem ser compostos. Você pode usar useDrag e usePinch no mesmo elemento: const bindDrag = useDrag(...); const bindPinch = usePinch(...) e então expandir as duas funções bind: ...bindDrag() ...bindPinch(). O use-gesture diferencia automaticamente os tipos de gesto.

Finalidade da função bind()

O que a função bind() retornada pelos ganchos de use-gesture faz?

Recapitulação da lição: integração com use-gesture

@use-gesture/react fornece useDrag, usePinch, useScroll, useHover e useMove. Cada gancho retorna uma função bind(), cuja expansão conecta os eventos de gesto aos elementos do DOM. O estado do gesto fornece movement, velocity, direction, first e last. Combine-o com a função imperativa api.start() do react-spring para criar animações interativas baseadas em física. Use velocity para arremessos e dispensas e bounds para limitar o movimento.

Grátis para começar

Aprenda React com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
88
Aulas
324

Perguntas Frequentes

A aula “Animações orientadas por gestos com use-gesture” é grátis?

Sim — o texto completo de “Animações orientadas por gestos com use-gesture” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “Animações orientadas por gestos com use-gesture”?

Combine react-spring com @use-gesture/react para criar animações controladas por arraste, pinça e rolagem. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Animações orientadas por gestos com use-gesture”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos do React Spring: hook useSpring
  2. Componentes animados e interpolação de estilos
  3. useTrail e useChain para sequências
  4. Animações orientadas por gestos com use-gesture
← Voltar para React Academy