0Pricing
Vue Academy · Lezione

Hook di transizione JavaScript

Hook @before-enter, @enter, @after-enter, @leave, utilizzo di GSAP per animazioni complesse

Hook di transizione JavaScript è una lezione Vue Academy gratuita su CoddyKit. Questa è la lezione 3 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 Vue Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Vue Academy include 4 lezioni in totale.

Perché usare gli hook JavaScript

Le classi CSS coprono la maggior parte dei casi, ma alcune animazioni richiedono JavaScript, ad esempio per integrare librerie come GSAP, animare un canvas o calcolare valori dinamici. <Transition> espone gli hook del ciclo di vita proprio per questi casi.

Gli hook disponibili

Vue emette eventi per ogni fase: @before-enter, @enter, @after-enter, @enter-cancelled e i corrispondenti hook per l'uscita.

<Transition
  @before-enter="onBeforeEnter"
  @enter="onEnter"
  @after-enter="onAfterEnter"
  @leave="onLeave"
>
  <div v-if="show">Animated by JS</div>
</Transition>

before-enter imposta lo stato iniziale

@before-enter riceve l'elemento DOM ed esegue il codice prima dell'inserimento. Lo utilizzi per impostare gli stili iniziali, proprio come farebbe una classe enter-from.

function onBeforeEnter(el) {
  el.style.opacity = 0;
  el.style.transform = "translateY(20px)";
}

enter riceve el e done

@enter riceve due argomenti: l'elemento e una callback done. Animi l'elemento, quindi chiami done() al termine, così Vue sa che la transizione è conclusa.

function onEnter(el, done) {
  // animate to final state
  el.style.transition = "all 0.4s ease";
  el.style.opacity = 1;
  el.style.transform = "translateY(0)";
  el.addEventListener("transitionend", done, { once: true });
}

Chiami sempre done

Se dimentica done(), Vue aspetta indefinitamente e la transizione non termina mai: after-enter non viene mai eseguito e l'elemento potrebbe rimanere in uno stato di animazione incompleto. Chiamarlo è obbligatorio negli hook gestiti da JavaScript.

function onEnter(el, done) {
  // ... animate ...
  setTimeout(done, 400); // fallback if no transitionend
}

leave con done

L'hook @leave funziona allo stesso modo: animi l'elemento per farlo uscire, quindi chiami done() affinché Vue lo rimuova dal DOM.

function onLeave(el, done) {
  el.style.transition = "all 0.3s ease";
  el.style.opacity = 0;
  el.addEventListener("transitionend", done, { once: true });
}

after-enter per la pulizia

@after-enter viene eseguito al termine dell'entrata. Lo utilizzi per rimuovere gli stili inline, reimpostare le proprietà di transizione o avviare la logica successiva.

function onAfterEnter(el) {
  el.style.transition = "";
  el.style.transform = "";
}

Ignorare CSS con :css="false"

Quando anima esclusivamente tramite JavaScript, imposti :css="false". In questo modo Vue ignora completamente il rilevamento delle classi CSS e si affida solo alle callback done per determinare i tempi. Inoltre, evita interferenze accidentali da parte del CSS.

<Transition
  :css="false"
  @enter="onEnter"
  @leave="onLeave"
>
  <div v-if="show">Pure JS animation</div>
</Transition>

Integrazione di GSAP

Gli hook JavaScript sono particolarmente utili con le librerie di animazione. GSAP può applicare un tween all'elemento e accettare done come callback onComplete.

function onEnter(el, done) {
  gsap.from(el, {
    opacity: 0,
    y: 30,
    duration: 0.4,
    onComplete: done
  });
}

Hook di annullamento

@enter-cancelled e @leave-cancelled vengono eseguiti se una transizione viene interrotta, ad esempio quando l'utente attiva rapidamente un'opzione. Li utilizzi per interrompere i tween in corso ed evitare stati residui.

function onEnterCancelled(el) {
  gsap.killTweensOf(el);
}

Quando scegliere gli hook JavaScript

Scelga gli hook JavaScript quando servono effetti fisici, valori dinamici specifici per ogni elemento, integrazione con librerie o una sequenza precisa. Per semplici dissolvenze e scorrimenti, le classi CSS rimangono più semplici e più efficienti.

Verifica rapida

Perché si passa :css="false" insieme agli hook JavaScript?

Riepilogo

Ha imparato a usare gli hook di transizione JavaScript: @before-enter (imposta lo stato iniziale), @enter/@leave (anima, quindi chiama done), @after-enter (esegue la pulizia), oltre a :css="false" per ignorare le classi CSS e agli hook di annullamento per gestire le interruzioni.

Domande Frequenti

La lezione «Hook di transizione JavaScript» è gratuita?

Sì — il testo completo di «Hook di transizione JavaScript» è 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 Vue Academy, passa a CoddyKit PRO. Il corso Vue Academy include 4 lezioni in totale.

Cosa imparerò in «Hook di transizione JavaScript»?

Hook @before-enter, @enter, @after-enter, @leave, utilizzo di GSAP per animazioni complesse Eserciti Vue 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 Vue Academy?

Non è richiesta alcuna esperienza precedente. Vue 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 3 di 4.

Quanto tempo richiede la lezione «Hook di transizione JavaScript»?

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 Vue Academy?

Sì. Ogni lezione Vue 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. Il componente Transition
  2. Transizioni e animazioni CSS
  3. Hook di transizione JavaScript
  4. TransitionGroup per le animazioni delle liste
← Torna a Vue Academy