Vue.js
Ganchos de ciclo de vida
Buscar..
Ganchos para vue 1.x
init
created
$el
, pero después dedata observation
, lascomputed properties
, laswatch/event callbacks
y losmethods
se han configurado.
beforeCompile
compiled
directives
están vinculadas pero aún antes de que$el
esté disponible.
ready
$el
se completan y la instancia se inyecta en el DOM por primera vez.
attached
$el
se adjunta al DOM por unadirective
o instancia llama a$appendTo()
.
detached
$el
se elimina / se separa del DOM o método de instancia.
beforeDestroy
destroyed
bindings
ydirectives
ya se han liberado y las instancias secundarias también se han destruido.
Usando en una instancia
Dado que todos los ganchos de ciclo de vida en Vue.js
son solo functions
, puede colocar cualquiera de ellos directamente en la instancia declaraction.
//JS
new Vue({
el: '#example',
data: {
...
},
methods: {
...
},
//LIFECYCLE HOOK HANDLING
created: function() {
...
},
ready: function() {
...
}
});
Errores comunes: Acceso a DOM desde el enlace `ready ()`
Un caso de uso común para el enlace ready()
es acceder al DOM, por ejemplo, para iniciar un complemento de Javascript, obtener las dimensiones de un elemento, etc.
El problema
Debido al mecanismo asíncrono de actualización de DOM de Vue, no se garantiza que el DOM se haya actualizado completamente cuando se llame al gancho ready()
. Esto generalmente resulta en un error porque el elemento no está definido.
La solución
Para esta situación, el método de instancia $nextTick()
puede ayudar. Este método difiere la ejecución de la función de devolución de llamada proporcionada hasta después del siguiente tick, lo que significa que se activa cuando se garantiza que todas las actualizaciones de DOM finalizarán.
Ejemplo:
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. }) } }