0Pricing
React Academy · Aula

Componentes animados e interpolação de estilos

Aplique valores de mola a animated.div e a outros elementos e interpole valores para cálculos complexos de estilos.

Componentes animados e interpolação de estilos é uma aula grátis de React Academy no CoddyKit. Esta é a aula 2 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.

Substituições diretas por animated.*

O react-spring fornece versões animadas de todos os elementos HTML: animated.div, animated.span, animated.img, animated.button e assim por diante. Elas são substituições diretas de suas contrapartes nativas, com uma diferença fundamental: podem aceitar objetos SpringValue como propriedades de estilo.

Por que somente animated.* pode usar molas

Elementos comuns do React recebem o estilo como um objeto simples com valores estáticos. SpringValues são objetos especiais que se atualizam a cada quadro da animação sem passar pelo ciclo de nova renderização do React. Somente componentes animated.* sabem como se inscrever nas atualizações de SpringValue e modificar diretamente o estilo do DOM, ignorando completamente o React para obter o máximo desempenho.

Aplicação básica de estilos de mola

Aplique os valores da mola diretamente como propriedades de estilo CSS em componentes animados. Por exemplo: style={{ opacity: opacity, transform: transform }}, em que opacity e transform são SpringValues de useSpring. animated.div lê esses valores a cada intervalo de RAF (requestAnimationFrame) e os aplica ao nó do DOM.

O método de interpolação .to()

SpringValues têm um método .to() para transformar sua saída. Um caso de uso comum é converter um valor numérico de mola em uma cadeia CSS: x.to(v => "translateX(" + v + "px)"). A função recebe o valor numérico atual e retorna a saída transformada, que é aplicada como estilo.

Interpolação de intervalo para intervalo

O método .to() também aceita entradas em matrizes para mapear intervalos: x.to([0, 1], ["#ff0000", "#00ff00"]) mapeia o valor da mola do intervalo [0, 1] para o intervalo de cores que vai do vermelho ao verde. É assim que você interpola molas numéricas para cores, cadeias de texto ou qualquer valor que não possa ser representado como um número simples.

Interpolação de transformação com vários valores

Quando uma mola acompanha vários valores simultaneamente, é possível interpolá-los em conjunto. Para uma mola que acompanha { x, y }, você pode escrever: x.to((xVal, yVal) => "translate(" + xVal + "px," + yVal + "px)"). A função de retorno de .to() recebe todos os valores na ordem em que aparecem na configuração da mola.

Criar componentes personalizados animados

Você pode envolver seus próprios componentes com animated(): const AnimatedCard = animated(Card). O componente envolvido deve aceitar uma propriedade style e encaminhá-la para um elemento do DOM. Agora AnimatedCard pode receber SpringValues em sua propriedade de estilo, assim como animated.div.

Composição de várias molas

Animações complexas geralmente combinam várias molas. Por exemplo, uma animação de entrada pode usar uma mola para a opacidade e outra para a posição vertical. Você pode aplicar ambas ao mesmo animated.div: style={{ opacity: opacitySpring.opacity, transform: positionSpring.y.to(y => "translateY(" + y + "px)") }}.

Desempenho: ignorando novas renderizações do React

A característica de desempenho mais importante do react-spring é que as atualizações dos valores animados ignoram o reconciliador do React. Quando uma mola está sendo animada, o React NOT faz uma nova renderização do componente a cada quadro. Em vez disso, o componente animated.* atualiza diretamente a propriedade de estilo do nó do DOM em cada função de retorno de requestAnimationFrame, possibilitando animações a 60 quadros por segundo sem a sobrecarga do React.

Interpolação para opacidade e escala

Padrões comuns de animação com interpolação: aparecer gradualmente na montagem usando opacity.to([0, 1], [0, 1]), aumentar a escala ao passar o cursor usando scale.to(s => "scale(" + s + ")") e girar ao alternar usando rotation.to(r => "rotate(" + r + "deg)"). Encadear essas transformações cria efeitos compostos.

Limitação e extrapolação

Por padrão, .to() com matrizes de intervalo pode extrapolar além do intervalo definido. É possível controlar isso com a opção de extrapolação: x.to({ range: [0, 1], output: [0, 100], extrapolate: "clamp" }) impede que a saída fique abaixo de 0 ou acima de 100, mesmo que a mola ultrapasse esses limites. Isso é útil para barras de progresso e animações limitadas.

Requisito do componente animated.*

Por que é necessário usar animated.div em vez de um div comum ao aplicar valores de mola?

Resumo da lição: componentes animados

animated.div, animated.span e animated(CustomComponent) são substituições diretas que aceitam SpringValues como propriedades de estilo. O método .to() interpola valores de mola: mapeia-os para cadeias CSS, intervalos de cores ou qualquer formato de saída. Várias molas são compostas naturalmente em um único elemento. O principal benefício de desempenho é que as atualizações das molas ignoram novas renderizações do React ao modificar diretamente os estilos do DOM em funções de retorno de RAF.

Perguntas Frequentes

A aula “Componentes animados e interpolação de estilos” é grátis?

Sim — o texto completo de “Componentes animados e interpolação de estilos” é 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 “Componentes animados e interpolação de estilos”?

Aplique valores de mola a animated.div e a outros elementos e interpole valores para cálculos complexos de estilos. 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 2 de 4.

Quanto tempo leva a aula “Componentes animados e interpolação de estilos”?

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