0Pricing
React Academy · Lezione

Componenti animati e interpolazione degli stili

Applicare valori spring ad animated.div e ad altri elementi e interpolare i valori per calcoli complessi degli stili

Componenti animati e interpolazione degli stili è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.

Sostituti immediati animated.*

react-spring fornisce versioni animate di tutti gli elementi HTML: animated.div, animated.span, animated.img, animated.button e così via. Sono sostituti diretti delle controparti native, con una differenza fondamentale: possono accettare oggetti SpringValue come props di stile.

Perché solo animated.* può usare le animazioni spring

I normali elementi React ricevono lo stile come un oggetto semplice con valori statici. SpringValues sono oggetti speciali che si aggiornano a ogni frame dell'animazione senza passare dal ciclo di nuovo rendering di React. Solo i componenti animated.* sanno sottoscriversi agli aggiornamenti di SpringValue e modificare direttamente lo stile del DOM, bypassando completamente React per ottenere le massime prestazioni.

Applicazione di base degli stili spring

Applichi i valori spring direttamente come props di stile CSS sui componenti animated. Ad esempio: style={{ opacity: opacity, transform: transform }}, dove opacity e transform sono SpringValue restituiti da useSpring. animated.div legge questi valori a ogni tick di RAF (requestAnimationFrame) e li applica al nodo DOM.

Il metodo di interpolazione .to()

Gli oggetti SpringValue dispongono di un metodo .to() per trasformare il risultato. Un caso d'uso comune consiste nel convertire un valore spring numerico in una stringa CSS: x.to(v => "translateX(" + v + "px)"). La funzione riceve il valore numerico corrente e restituisce il risultato trasformato, che viene applicato come stile.

Interpolazione da un intervallo a un altro

Il metodo .to() accetta anche array come input per la mappatura degli intervalli: x.to([0, 1], ["#ff0000", "#00ff00"]) mappa il valore spring dall'intervallo [0, 1] all'intervallo di colori dal rosso al verde. In questo modo è possibile interpolare valori spring numerici in colori, stringhe o qualsiasi valore che non possa essere rappresentato come un semplice numero.

Interpolazione di trasformazioni con più valori

Quando un'animazione spring segue più valori contemporaneamente, è possibile interpolarli insieme. Per un'animazione spring che segue { x, y }, è possibile scrivere: x.to((xVal, yVal) => "translate(" + xVal + "px," + yVal + "px)"). Il callback .to() riceve tutti i valori nell'ordine in cui compaiono nella configurazione dell'animazione spring.

Creazione di componenti personalizzati animati

È possibile racchiudere i propri componenti con animated(): const AnimatedCard = animated(Card). Il componente racchiuso deve accettare una prop style e inoltrarla a un elemento DOM. A questo punto AnimatedCard può ricevere oggetti SpringValue nella prop style proprio come animated.div.

Composizione di più animazioni spring

Le animazioni complesse spesso combinano più animazioni spring. Ad esempio, un'animazione di ingresso può usare un'animazione spring per l'opacità e un'altra per la posizione verticale. È possibile applicarle entrambe allo stesso animated.div: style={{ opacity: opacitySpring.opacity, transform: positionSpring.y.to(y => "translateY(" + y + "px)") }}.

Prestazioni: bypassare i nuovi rendering di React

La caratteristica più importante di react-spring in termini di prestazioni è che gli aggiornamenti dei valori animati bypassano il reconciler di React. Quando un'animazione spring è in esecuzione, React NON esegue il rendering del componente a ogni frame. Invece, il componente animated.* aggiorna direttamente la proprietà style del nodo DOM in ogni callback di requestAnimationFrame, rendendo possibili animazioni a 60 fps senza l'overhead di React.

Interpolazione verso opacità e scala

Pattern di animazione comuni con l'interpolazione: dissolvenza all'avvio tramite opacity.to([0, 1], [0, 1]), ingrandimento al passaggio del mouse tramite scale.to(s => "scale(" + s + ")") e rotazione alla commutazione tramite rotation.to(r => "rotate(" + r + "deg)"). Combinando queste trasformazioni si creano effetti composti.

Limitazione ed estrapolazione

Per impostazione predefinita, .to() con array di intervalli può estrapolare oltre l'intervallo definito. È possibile controllare questo comportamento con l'opzione extrapolate: x.to({ range: [0, 1], output: [0, 100], extrapolate: "clamp" }) impedisce all'output di scendere sotto 0 o di superare 100, anche se l'animazione spring oltrepassa il limite. È utile per le barre di avanzamento e le animazioni vincolate.

Requisito del componente animated.*

Perché è necessario utilizzare animated.div invece di un semplice div quando si applicano valori spring?

Riepilogo della lezione: componenti animati

animated.div, animated.span e animated(CustomComponent) sono sostituti immediati che accettano oggetti SpringValue come props di stile. Il metodo .to() interpola i valori spring trasformandoli in stringhe CSS, intervalli di colori o qualsiasi altro formato di output. Più animazioni spring possono essere composte naturalmente sullo stesso elemento. Il principale vantaggio in termini di prestazioni è che gli aggiornamenti delle animazioni spring bypassano i nuovi rendering di React modificando direttamente gli stili del DOM nei callback RAF.

Domande Frequenti

La lezione «Componenti animati e interpolazione degli stili» è gratuita?

Sì — il testo completo di «Componenti animati e interpolazione degli stili» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.

Cosa imparerò in «Componenti animati e interpolazione degli stili»?

Applicare valori spring ad animated.div e ad altri elementi e interpolare i valori per calcoli complessi degli stili Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare React Academy?

Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Componenti animati e interpolazione degli stili»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione React Academy?

Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Fondamenti di React Spring: hook useSpring
  2. Componenti animati e interpolazione degli stili
  3. useTrail e useChain per le sequenze
  4. Animazioni basate sui gesti con use-gesture
← Torna a React Academy