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.
npm install @kkwaenggwari/animatedUn 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.ViewinAnimated.div. - Un valore può muovere insieme una barra, un quadrante e una fila di card, ognuno con il proprio intervallo.
useAnimatedpossiede la ricetta: parte al montaggio, riparte quando cambia una dipendenza e fa pulizia allo smontaggio.
Preparazione dell’esempio…
Le stesse chiamate di React Native
// 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.
scopescrive 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
springla traiettoria si piega, contimingmantiene 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…
Che cosa puoi costruire
Pattern completi con impostazioni regolabili e il codice sorgente integrale.
Tutti gli esempi- Dock magneticoLe icone crescono al passaggio del puntatore, spostando le vicine, e si assestano quando se ne va.
moveInputfollowuseAnimatedCSSmultiply - Mazzo da scorrereTrascina la card in cima. Oltre la soglia vola via; altrimenti torna indietro con una molla.
dragInputuseAnimatedListenerAnimated.div - Galleria condivisaUn riquadro si espande in una vista di dettaglio e torna a rimpicciolirsi nella griglia.
Animated.SceneAnimated.Keepmove
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 ChorusInizia 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