Movimento per React DOM · API Animated di React Native

Scrivi il movimento una volta. Scorre fluido e non si rompe mai.

Animated porta sul web l’Animated di React Native. Un valore guida quanti elementi vuoi senza un render di React a ogni frame, il movimento supportato viene riprodotto dal browser stesso e ogni interruzione riparte da ciò che è sullo schermo.

Installa
npm install @kkwaenggwari/animated

Un unico valore di orologio guida l’increspatura di tutte le 64 forme. Muovi il puntatore sul palco.

Misurato su questa release

Misurato con la build 1.0.0 in Chrome headless su un PC desktop. I numeri variano a seconda del dispositivo. Come abbiamo misurato

  • 0.00msJavaScript per frame mentre si muovono 400 elementi

    Il movimento finito di transform e opacity sugli elementi Animated viene riprodotto dal browser. I callback di frame della pagina non fanno nessun lavoro.

  • 0.13msJavaScript per frame con un valore che guida 10.000 elementi

    Il valore scrive una sola variabile CSS; ogni elemento ricava il proprio stile da lì, in CSS.

  • 0Render di React durante il movimento

    I valori non passano mai dallo stato di React. I componenti si renderizzano quando cambiano le tue props, non quando cambia un frame.

01 · Facile

L’API che conosci già, sul normale style di React

timing, spring, interpolate, loop e Animated.event mantengono i nomi e le configurazioni di React Native. Un valore va direttamente in una normale prop style, quindi non c’è nessun componente speciale da imparare prima del tuo primo movimento.

  • Porta il codice da React Native rinominando Animated.View in Animated.div.
  • Un valore può muovere insieme una barra, un quadrante e una fila di card, ognuno con il proprio intervallo.
  • useAnimated possiede la ricetta: parte al montaggio, riparte quando cambia una dipendenza e fa pulizia allo smontaggio.

Preparazione dell’esempio…

Le stesse chiamate di React Native

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();

02 · Veloce

Nessun render di React a ogni frame

Il valore di un hook è una variabile CSS. Interpolazioni lineari e aritmetica diventano espressioni calc() esatte di quella variabile, quindi ogni frame è una sola scrittura e il resto lo ricava il browser. Il movimento finito di transform e opacity sugli elementi Animated.<tag> viene riprodotto dal browser senza callback di frame.

  • Cambia il numero di punti: il contatore mostra che React si è renderizzato una volta per modifica, mai per frame.
  • scope scrive il valore una volta su un contenitore invece che su ogni elemento.
  • inspect(element) ti dice quale percorso usa ogni proprietà e perché.

Preparazione dell’esempio…

03 · Stabile

Interrompilo dove vuoi. Prosegue.

Una nuova destinazione parte da dove l’elemento si trova sullo schermo, e una molla conserva anche la velocità, così invertire a metà corsa curva in modo fluido invece di fermarsi prima. I controller dichiarati in un hook vengono fermati e rilasciati quando vengono sostituiti e allo smontaggio, e il markup renderizzato sul server continua ad animarsi dopo l’idratazione.

  • Clicca due volte in fretta: con spring la traiettoria si piega, con timing mantiene la posizione ma inizia una nuova curva.
  • Fermarsi lascia il valore dov’è; niente salta a uno stato finale.
  • Nessun ciclo di frame dimenticato dopo lo smontaggio, un cambio di route o una tab nascosta.

Preparazione dell’esempio…

Costruito su Animated

Ti serve un componente finito? Animated Chorus.

Numeri che scorrono, evidenziazioni di tab che si spostano, avanzamento, sheet e liste animate che si inseriscono direttamente in React e React Native. Questi tre girano proprio ora su questa pagina.

Visita Animated Chorus

Inizia in tre minuti

Installa il pacchetto, muovi il tuo primo valore, poi scegli una guida per il lavoro che hai davanti.

npm install @kkwaenggwari/animated

Cerca

Scrivi per cercare nella documentazione.