Guias · 07

Vindo do React Native

O que continua igual, o que muda e o que a web acrescenta.

As mesmas chamadas

Controladores, grafos e configurações seguem o Animated do React Native. Renderize hosts DOM como Animated.div onde o React Native renderiza Animated.View. useAnimatedValue está disponível como no React Native.

Preparando o exemplo…

Diferenças que vale conhecer

Estes detalhes fazem o código portado se comportar como no dispositivo.

  • useNativeDriver e isInteraction são aceitos. A reprodução é escolhida por saída: as saídas elegíveis rodam no navegador e o resto em JavaScript.
  • spring aceita stiffness/damping/mass, bounciness/speed ou tension/friction, com o padrão do React Native quando nada é informado.
  • interpolate aceita easing e os três modos de extrapolação.
  • Easing corresponde ao React Native, incluindo elastic. Easing.exp é reescalado em 0,1% para começar exatamente em 0 e poder rodar no navegador.
  • A velocidade de decay é em unidades por milissegundo e a de spring em unidades por segundo, como no React Native.
  • Animated.createAnimatedComponent envolve um componente que repassa a ref.
Spinner.jsx
// React Native
<Animated.View style={{ transform: [{ rotate }] }} />

// React DOM with @kkwaenggwari/animated — the rest is identical
<Animated.div style={{ transform: [{ rotate }] }} />

const spin = useAnimatedValue(0);
const rotate = spin.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] });

Animated.loop(
  Animated.timing(spin, { toValue: 1, duration: 900, easing: Easing.linear, useNativeDriver: true }),
).start();

O que a web acrescenta

O style comum do React aceita valores de hook diretamente, seed/pose/respond descrevem destinos e gestos, e Animated.Keep e Animated.Scene cuidam das saídas e do layout.

Pesquisar

Digite para pesquisar na documentação.