Vue.js
Lifecycle Hooks
Ricerca…
Ganci per Vue 1.x
Chiamato in modo sincrono dopo l'inizializzazione dell'istanza e prima di qualsiasi osservazione iniziale dei dati.init
Chiamato in modo sincrono dopo la creazione dell'istanza. Ciò si verifica prima dicreated$elsetup, ma dopodata observation, sono state configuratecomputed properties,watch/event callbacksemethods.
Immediatamente prima della compilazione dell'istanza Vue.beforeCompile
Subito dopo la compilazione è stata completata. Tutte lecompileddirectivessono collegate ma ancora prima che$elsia disponibile.
Si verifica dopo la compilazione eready$elsono completi e l'istanza viene iniettata nel DOM per la prima volta.
Si verifica quandoattached$elè collegato al DOM da unadirectiveo un'istanza chiama$appendTo().
Chiamato quandodetached$elviene rimosso / staccato dal DOM o dal metodo di istanza.
Immediatamente prima che l'istanza di Vue venga distrutta, ma è ancora completamente funzionante.beforeDestroy
Chiamato dopo che un'istanza è stata distrutta. Tutti idestroyedbindingse ledirectivessono già stati non vincolati e anche le istanze secondarie sono state distrutte.
Uso in un'istanza
Poiché tutti gli hook del ciclo di vita in Vue.js sono solo functions , è possibile Vue.js uno direttamente nell'istanza dichiaraction.
//JS
new Vue({
el: '#example',
data: {
...
},
methods: {
...
},
//LIFECYCLE HOOK HANDLING
created: function() {
...
},
ready: function() {
...
}
});
Common Trappole: Accesso al DOM dal hook `ready ()`
Un usecase comune per l'hook ready() è quello di accedere al DOM, ad esempio per avviare un plugin Javascript, ottenere le dimensioni di un elemento, ecc.
Il problema
A causa del meccanismo di aggiornamento DOM asincrono di Vue, non è garantito che il DOM sia stato completamente aggiornato quando viene chiamato l'hook ready() . Di solito ciò genera un errore perché l'elemento non è definito.
La soluzione
Per questa situazione, il metodo di istanza $nextTick() può essere d'aiuto. Questo metodo rimanda l'esecuzione della funzione di callback fornita fino a dopo il segno di spunta successivo, il che significa che viene attivato quando tutti gli aggiornamenti DOM sono garantiti per essere completato.
Esempio:
module.exports {
ready: function () {
$('.cool-input').initiateCoolPlugin() //fails, because element is not in DOM yet.
this.$nextTick(function() {
$('.cool-input').initiateCoolPlugin() // this will work because it will be executed after the DOM update.
})
}
}