0Pricing
Vue Academy · Lezione

Scrittura di direttive personalizzate

app.directive(), hook mounted/updated/unmounted, argomenti e modifier delle direttive

Scrittura di direttive personalizzate è una lezione Vue 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 Vue Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Vue Academy include 4 lezioni in totale.

Quando i componenti non bastano

In Vue, la maggior parte del riutilizzo avviene tramite componenti e composable. Tuttavia, parte della logica agisce sul DOM grezzo: impostare automaticamente il focus su un input, integrare una libreria non Vue o misurare un elemento. Le direttive personalizzate sono state create proprio per questo.

Una direttiva minima

Registri una direttiva nell'app con app.directive. L'hook mounted riceve l'elemento, quindi questa direttiva imposta il focus su un input quando viene visualizzato.

const app = createApp(App)
app.directive('focus', {
  mounted(el) { el.focus() }
})

Usare la direttiva

La applichi in un template con il prefisso v- seguito dal nome registrato.

<template>
  <input v-focus />
</template>

Direttive locali in script setup

All'interno di <script setup>, qualsiasi variabile di primo livello che inizia con v e usa il camelCase diventa una direttiva utilizzabile. La chiami vFocus e la usi come v-focus.

<script setup>
const vFocus = {
  mounted: (el) => el.focus()
}
</script>

<template>
  <input v-focus />
</template>

L'oggetto binding

Ogni hook riceve un oggetto binding come secondo argomento. Contiene il valore, l'argomento e i modificatori della direttiva passati nel template.

app.directive('demo', {
  mounted(el, binding) {
    console.log(binding.value, binding.arg, binding.modifiers)
  }
})

Passare un valore

L'espressione dopo il segno di uguale diventa binding.value. In questo caso viene passato un colore e applicato all'elemento.

<!-- template -->
<p v-color="'red'">Hello</p>

<!-- directive -->
app.directive('color', {
  mounted(el, binding) { el.style.color = binding.value }
})

Passare un argomento

La parte dopo i due punti diventa binding.arg. Permette a una stessa direttiva di comportarsi diversamente in base a un'etichetta.

<!-- v-pin:top means binding.arg === 'top' -->
<div v-pin:top="20"></div>

Usare i modificatori

I modificatori compaiono dopo i punti e arrivano in binding.modifiers come mappa booleana. Può usarli per modificare il comportamento.

<!-- v-pin.fixed -> binding.modifiers.fixed === true -->
<div v-pin.fixed="10"></div>

Gli hook del ciclo di vita delle direttive

Le direttive dispongono di hook che rispecchiano il ciclo di vita dei componenti: created, beforeMount, mounted, beforeUpdate, updated, beforeUnmount e unmounted.

Reagire agli aggiornamenti

L'hook updated viene eseguito dopo che l'elemento è stato nuovamente renderizzato. Confronti binding.value con binding.oldValue per agire solo in caso di cambiamenti effettivi e svolga le operazioni di pulizia in unmounted.

app.directive('color', {
  mounted(el, binding) { el.style.color = binding.value },
  updated(el, binding) {
    if (binding.value !== binding.oldValue) el.style.color = binding.value
  }
})

Direttive e componenti

Preferisca i componenti per tutto ciò che riguarda la struttura o lo stato. Ricorra alle direttive solo quando serve un accesso diretto al DOM a basso livello che non si adatta a un componente, ad esempio per la gestione del focus o per widget DOM di terze parti.

Verifica rapida

Metta alla prova le Sue conoscenze sulle direttive personalizzate.

Riepilogo

Ha imparato a creare direttive personalizzate:

  • Le registri globalmente con app.directive oppure localmente come vName in script setup.
  • binding.value, binding.arg e binding.modifiers passano i dati alla direttiva.
  • Hook del ciclo di vita: created, beforeMount, mounted, beforeUpdate, updated, beforeUnmount, unmounted.
  • Usi le direttive per operazioni di basso livello sul DOM; negli altri casi preferisca i componenti.

Domande Frequenti

La lezione «Scrittura di direttive personalizzate» è gratuita?

Sì — il testo completo di «Scrittura di direttive personalizzate» è 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 «Scrittura di direttive personalizzate»?

app.directive(), hook mounted/updated/unmounted, argomenti e modifier delle direttive 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 4 di 4.

Quanto tempo richiede la lezione «Scrittura di direttive personalizzate»?

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. v-model: interni del two-way binding
  2. Modifier degli eventi v-on
  3. Binding dinamici e multipli con v-bind
  4. Scrittura di direttive personalizzate
← Torna a Vue Academy