Animazioni di entrata e uscita senza librerie
Implementi le animazioni di mount e unmount controllando manualmente i tempi di display e opacità in React.
Animazioni di entrata e uscita senza librerie è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 4 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.
Il problema dello smontaggio
Quando esegue il rendering condizionale con {show && , React rimuove l'elemento dal DOM nell'istante in cui show diventa false. Non c'è tempo per un'animazione di uscita, perché il nodo è già scomparso.
Le animazioni di entrata sono semplici; quelle di uscita sono la vera sfida.
Soluzione 1: mantenerlo montato
La soluzione più semplice è non smontarlo mai. Mantenga l'elemento renderizzato e animi opacity fino a zero, aggiungendo pointer-events: none quando è nascosto, per poi riportarla a uno quando viene mostrato.
Questo consente dissolvenze fluide in entrambe le direzioni, al costo di mantenere l'elemento nel DOM.
Soluzione 2: una macchina a stati per il montaggio
Per uno smontaggio reale, modelli una piccola macchina a stati con fasi come mounting, mounted, unmounting e unmounted. Il nodo viene rimosso solo al termine dell'animazione di uscita.
Lo stato determina quali classi di animazione vengono applicate in ogni fase.
Un hook useMount
È possibile incapsulare la macchina in un hook personalizzato, spesso chiamato useMount. Riceve la visibilità desiderata e restituisce se l'elemento deve trovarsi nel DOM, oltre alla fase corrente.
I componenti restano puliti perché la logica temporale risiede nell'hook riutilizzabile.
Coppie di classi per entrata e uscita
Seguendo le convenzioni comuni, al montaggio si applicano enter e poi enter-active, mentre durante lo smontaggio si applicano exit e poi exit-active. La classe di base imposta lo stato iniziale e quella attiva imposta lo stato finale con una transizione.
Alternarle nel frame corretto produce l'animazione.
Ascoltare transitionend
Per sapere quando termina un'animazione di uscita, ascolti l'evento transitionend sull'elemento. Quando si verifica per l'uscita, si imposta lo stato su unmounted e si rimuove il nodo.
Questo collega lo smontaggio esattamente alla fine dell'animazione visiva, invece di basarlo su un timeout stimato.
Un componente Transition riutilizzabile
È possibile racchiudere tutto in un componente Transition che accetta una prop in e i children. Mantiene i children montati durante l'animazione di uscita e applica le classi corrette a ogni fase.
Chi lo utilizza deve solo alternare in e ottiene automaticamente animazioni corrette di entrata e uscita.
Attivare correttamente la classe active
Un dettaglio sottile: è necessario lasciare che il browser esegua il paint della classe iniziale prima di aggiungere quella active; altrimenti l'elemento scatta senza transizione. Un requestAnimationFrame o un reflow forzato tra le due garantisce che la transizione venga effettivamente eseguita.
Questo garantisce che il browser registri prima i valori iniziali.
Confronto con react-transition-group
La libreria react-transition-group fornisce i componenti Transition e CSSTransition che implementano esattamente questo schema, incluso il ciclo di vita delle classi e la tempistica dello smontaggio.
La versione fai-da-te riprende le sue idee fondamentali, perciò la libreria è facile da capire dopo averne costruita una personalmente.
Quando usare una libreria invece del fai da te
Per una singola dissolvenza semplice, l'approccio con l'elemento mantenuto montato o un piccolo hook è sufficiente ed evita una dipendenza. Per molte transizioni coordinate, elenchi con aggiunte e rimozioni o sequenze complesse, una libreria fa risparmiare tempo e riduce i bug nei casi limite.
Scelga in base alla complessità delle animazioni effettivamente necessaria per la sua app.
Mettere tutto insieme
Le animazioni di uscita richiedono che l'elemento rimanga in vita fino al completamento dell'animazione, che ciò avvenga non smontandolo mai, tramite una macchina a stati con transitionend oppure con una libreria.
Comprendere i meccanismi consente di scegliere l'approccio più leggero che soddisfi le proprie esigenze.
Verifica rapida
Verifichi la sua comprensione delle animazioni di uscita.
Riepilogo
Ha imparato perché le animazioni di uscita sono difficili, due soluzioni (mantenere l'elemento montato e una macchina a stati per il montaggio), come transitionend determina il momento dello smontaggio e come creare un componente Transition riutilizzabile.
Ha anche visto quando scegliere react-transition-group invece di una soluzione fai-da-te.
Impara React con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 88
- Lezioni
- 324
Domande Frequenti
La lezione «Animazioni di entrata e uscita senza librerie» è gratuita?
Sì — il testo completo di «Animazioni di entrata e uscita senza librerie» è 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 «Animazioni di entrata e uscita senza librerie»?
Implementi le animazioni di mount e unmount controllando manualmente i tempi di display e opacità in React. 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 4 di 4.
Quanto tempo richiede la lezione «Animazioni di entrata e uscita senza librerie»?
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
- Transizioni CSS con i cambiamenti di stato in React
- Animazioni CSS con keyframe in React
- useLayoutEffect per le misurazioni pre-animazione
- Animazioni di entrata e uscita senza librerie