
Vue.js ist ein beliebtes JavaScript-Framework für den Bau von Webanwendungen. Es ist so angelegt, dass es sich leicht benutzen und verstehen lässt, weshalb Einsteiger wie erfahrene Entwickler gern damit arbeiten. Einer der wichtigsten Bausteine von Vue.js sind die Lifecycle-Hooks: Über sie steuerst du, wie sich deine Komponenten verhalten, wenn sie in den Komponentenbaum eingehängt, aktualisiert oder wieder daraus entfernt werden.
Was ist ein Lifecycle-Hook in Vue.js?
Ein Lifecycle-Hook in Vue.js ist eine Funktion, die zu bestimmten Zeitpunkten aufgerufen wird: wenn die Komponente erzeugt, aktualisiert oder entfernt wird. Über diese Hooks legst du fest, was in jeder Phase des Komponentenlebenszyklus passieren soll, etwa Variablen initialisieren, asynchrone Methoden aufrufen oder Ressourcen aufräumen.
Die gebräuchlichsten Lifecycle-Hooks
Vue.js kennt mehrere Lifecycle-Hooks, am häufigsten kommen diese zum Einsatz:
setup: läuft vor allen anderen Hooks und ist der Einstiegspunkt für die Composition API, sei es in Komponenten ohne Build-Schritt oder um Composition-API-Code in eine Komponente mit Options API einzubinden.created: wird aufgerufen, nachdem die Komponente erzeugt und ihre Eigenschaften initialisiert wurdenmounted: wird aufgerufen, sobald die Komponente in der Seite hängt und ihr Rendering abgeschlossen istupdated: wird aufgerufen, wenn die Komponente neue Daten bekommtdestroyed: wird aufgerufen, wenn die Komponente zerstört und ihre Ressourcen aufgeräumt werden

So setzt du Lifecycle-Hooks ein
Lifecycle-Hooks zu benutzen ist in Vue.js unkompliziert. Du definierst sie, indem du dem Options-Objekt deiner Vue-Komponente eine Methode hinzufügst. Soll zum Beispiel etwas passieren, sobald die Komponente eingehängt ist, ergänzt du das Options-Objekt um folgende Methode:
mounted () {
// Code, der beim Einhängen der Komponente läuft
}Lifecycle-Hooks in der Praxis
Angenommen, du hast eine Komponente, die eine Artikelliste aus einer API anzeigt. Mit den Lifecycle-Hooks erledigst du dann Folgendes:
- Im Hook
createdrufst du die API auf, um die Artikel zu holen - Im Hook
mountedzeigst du die Artikel mitv-forauf der Seite an - Im Hook
updatedprüfst du, ob sich die Daten geändert haben, und rufst die API bei Bedarf erneut auf - Im Hook
destroyedräumst du Ressourcen wie Event-Abos auf, damit kein Speicher leckt.
Hier ein konkretes Beispiel, wie du mit den Lifecycle-Hooks eine Artikelliste anzeigst:
<template>
<div>
<ul>
<li v-for="article in articles" :key="article.id">{{ article.title }}</li>
</ul>
</div>
</template>
<script>
export default {
data () {
return {
articles: []
}
},
created () {
this.fetchData()
},
methods: {
fetchData () {
// API aufrufen, um die Artikel zu holen
}
},
updated () {
if (this.articles.length === 0) {
this.fetchData()
}
},
destroyed () {
// Ressourcen hier aufräumen
}
}
</script>FAQ zu den Lifecycle-Hooks von Vue.js
In welcher Reihenfolge laufen die Lifecycle-Hooks von Vue.js?
In Vue 3 laufen die Lifecycle-Hooks in dieser Reihenfolge ab: beforeCreate -> created -> beforeMount -> mounted -> beforeUpdate -> updated -> beforeDestroy -> destroyed.
Kann ich mehrere Lifecycle-Hooks in einer Komponente benutzen?
Ja, du kannst mehrere Lifecycle-Hooks in derselben Komponente benutzen. Das ist praktisch, wenn du das Verhalten einer Komponente zu verschiedenen Zeitpunkten ihres Lebenszyklus beobachten und steuern willst.
Gibt es Lifecycle-Hooks, die sich nicht kombinieren lassen?
Nein, beim Kombinieren der Lifecycle-Hooks gibt es keine Einschränkungen. Manche Hooks greifen allerdings nur in bestimmten Phasen des Lebenszyklus, etwa beforeDestroy: der läuft erst, nachdem die Komponente erzeugt wurde, aber bevor sie zerstört wird.
Fazit
Die Lifecycle-Hooks von Vue.js sind ein mächtiges Werkzeug, wenn du steuern willst, wie deine Komponenten auf die verschiedenen Ereignisse reagieren. Über sie legst du fest, was zu welchem Zeitpunkt im Lebenszyklus deiner Komponente passiert: Variablen initialisieren, asynchrone Methoden aufrufen, Ressourcen aufräumen. Sieh dir die einzelnen Hooks in Ruhe an, es lohnt sich für deine tägliche Arbeit.


