Vue.js lifecycle hooks: de complete gids voor je componenten

De lifecycle hooks van Vue.js bepalen wat er gebeurt wanneer een component wordt aangemaakt, gemount, bijgewerkt of vernietigd. Deze gids neemt ze een voor een door, met de volgorde waarin ze draaien en een werkend voorbeeld dat artikelen uit een API haalt.

Vue.js lifecycle hooks: de complete gids voor je componenten

Vue.js is een populair JavaScript-framework om webapplicaties mee te bouwen. Het is opgezet om makkelijk te gebruiken en te doorgronden te zijn, en dat maakt het aantrekkelijk voor beginnende én ervaren developers. Een van de belangrijkste onderdelen van Vue.js is het systeem van lifecycle hooks: daarmee stuur je hoe je componenten reageren op gebeurtenissen als het opbouwen, bijwerken en afbreken van de componentenboom.

Wat is een lifecycle hook in Vue.js?

Een lifecycle hook in Vue.js is een functie die op vaste momenten wordt aangeroepen: wanneer het component wordt aangemaakt, bijgewerkt of verwijderd. Met die hooks leg je vast welke acties in elke fase van de levensduur van een component moeten gebeuren, zoals variabelen initialiseren, asynchrone methodes aanroepen en resources opruimen.

De meestgebruikte lifecycle hooks

Vue.js kent verschillende lifecycle hooks, maar deze kom je het vaakst tegen:

  • setup: setup() draait vóór alle andere hooks en is het startpunt voor de Composition API in een component, zonder buildstap, of om code op basis van de Composition API in een component met de Options API te gebruiken.
  • created: aangeroepen nadat het component is aangemaakt en zijn properties zijn geïnitialiseerd
  • mounted: aangeroepen zodra het component in de pagina is gemount en de rendering klaar is
  • updated: aangeroepen zodra het component met nieuwe data wordt bijgewerkt
  • destroyed: aangeroepen wanneer het component wordt vernietigd en zijn resources worden opgeruimd

Lifecycle hooks gebruiken

Lifecycle hooks inzetten is eenvoudig in Vue.js. Je definieert ze door een methode aan het options-object van je Vue-component toe te voegen. Wil je bijvoorbeeld iets laten gebeuren zodra het component gemount is, dan voeg je deze methode aan dat options-object toe:

javascript
mounted () {
  // code die draait zodra het component gemount is
}

Voorbeeld: lifecycle hooks in de praktijk

Stel dat je een component hebt dat een lijst artikelen uit een API toont. Met de lifecycle hooks regel je het volgende:

  • In de hook created roep je de API aan om de artikelen op te halen
  • In de hook mounted zet je de artikelen op de pagina met v-for
  • In de hook updated controleer je of de data is veranderd en roep je de API zo nodig opnieuw aan
  • In de hook destroyed ruim je resources op, zoals abonnementen op events, om geheugenlekken te voorkomen.

Hier is een concreet voorbeeld waarin de lifecycle hooks een lijst artikelen tonen:

javascript
<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 () {
      // de API aanroepen om de artikelen op te halen
    }
  },
  updated () {
    if (this.articles.length === 0) {
      this.fetchData()
    }
  },
  destroyed () {
    // ruim hier de resources op
  }
}
</script>

Veelgestelde vragen over de lifecycle hooks van Vue JS

In welke volgorde draaien de lifecycle hooks van Vue JS?

In Vue 3 draaien de lifecycle hooks in deze volgorde: beforeCreate -> created -> beforeMount -> mounted -> beforeUpdate -> updated -> beforeDestroy -> destroyed.

Kan ik meerdere lifecycle hooks in één component gebruiken?

Ja, je kunt meerdere lifecycle hooks in hetzelfde component gebruiken. Dat komt van pas wanneer je het gedrag van een component op verschillende momenten in zijn levensduur wilt volgen en sturen.

Zijn er lifecycle hooks die je niet samen kunt gebruiken?

Nee, er zijn geen beperkingen op het combineren van lifecycle hooks. Wel horen sommige hooks bij een bepaalde fase: beforeDestroy bijvoorbeeld draait pas nadat het component is aangemaakt, en alleen vlak voordat het wordt vernietigd.

Conclusie

De lifecycle hooks van Vue.js zijn krachtig gereedschap voor developers die willen sturen hoe hun componenten op verschillende gebeurtenissen reageren. Met die hooks laat je op precieze momenten in de levensduur van je component iets gebeuren: variabelen initialiseren, asynchrone methodes aanroepen, resources opruimen. Neem de verschillende lifecycle hooks van Vue.js gerust een voor een door, je code wordt er beter van.

JavaScriptVue.js

Damien Flandrin Webdeveloper sinds 2010, maker van Gekkode en Email Impact. Elk artikel wordt vóór publicatie getest op een echt project. Contact
Nieuwsbrief

Nieuwe tests, tutorials en projecten, per e-mail.

Reproduceerbare tests, geversioneerde code, gedateerde resultaten. Nooit spam.