Guías · 07

Si vienes de React Native

Qué sigue igual, qué cambia y qué añade la web.

Las mismas llamadas

Los controladores, los grafos y las configuraciones siguen el Animated de React Native. Renderiza hosts DOM como Animated.div donde React Native renderiza Animated.View. useAnimatedValue está disponible como en React Native.

Preparando el ejemplo…

Diferencias que conviene conocer

Estos detalles hacen que el código portado se comporte como lo hacía en un dispositivo.

  • Se aceptan useNativeDriver e isInteraction. La reproducción se elige por salida: las salidas aptas se reproducen en el navegador y el resto en JavaScript.
  • spring acepta stiffness/damping/mass, bounciness/speed o tension/friction, con el valor por defecto de React Native si no indicas ninguno.
  • interpolate admite easing y los tres modos de extrapolación.
  • Easing coincide con React Native, incluido elastic. Easing.exp se reescala un 0,1 % para que empiece exactamente en 0 y pueda reproducirse en el navegador.
  • La velocidad de decay está en unidades por milisegundo y la de spring en unidades por segundo, como en React Native.
  • Animated.createAnimatedComponent envuelve un componente que reenvía la 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();

Lo que añade la web

El style normal de React acepta directamente valores de hook, seed/pose/respond describen destinos y gestos, y Animated.Keep y Animated.Scene se ocupan de las salidas y del layout.

Buscar

Escribe para buscar en la documentación.