Sobes.tech
Middle

Parlez-moi du cycle de vie d'un composant dans Vue.js.

sobes.tech IA

Réponse de l'IA

Le cycle de vie d'un composant Vue.js est un ensemble de hooks qui sont appelés à différentes étapes de son existence : de la création à la destruction.

Hooks principaux :

  1. Création :

    • beforeCreate : Le composant a été créé, mais les données et méthodes ne sont pas encore initialisées.
    • created : Le composant a été créé, les données et méthodes sont initialisées, mais le DOM n'est pas encore rendu.
  2. Montage :

    • beforeMount : Le template a été compilé, mais le composant n'a pas encore été inséré dans le DOM.
    • mounted : Le composant a été inséré dans le DOM, on peut accéder aux éléments DOM via $el.
  3. Mise à jour :

    • beforeUpdate : Les données du composant ont changé, mais le DOM n'a pas encore été mis à jour.
    • updated : Le DOM a été mis à jour après le changement de données.
  4. Démontage :

    • beforeUnmount : Le composant est en train d'être supprimé du DOM. Ici, on peut nettoyer les temporisateurs, écouteurs d'événements, etc.
    • unmounted : Le composant a été supprimé du DOM.

En plus des principaux, il existe des hooks pour le débogage (Debug) et la gestion des erreurs (Error Handling) :

  • renderTracked : Surveille les dépendances réactives lors du rendu.
  • renderTriggered : Appelé lorsque le composant doit être rerendu en raison d'un changement d'état réactif.
  • errorCaptured : Intercepte les erreurs survenues dans les composants enfants.
// Exemple d'utilisation des hooks
export default {
  data() {
    return {
      message: 'Bonjour Vue!'
    };
  },
  beforeCreate() {
    console.log('beforeCreate : Le composant a été créé, les données et méthodes ne sont pas accessibles.');
  },
  created() {
    console.log('created : Le composant a été créé, les données et méthodes sont accessibles.');
    console.log('Message :', this.message);
  },
  beforeMount() {
    console.log('beforeMount : Le template a été compilé.');
  },
  mounted() {
    console.log('mounted : Le composant a été inséré dans le DOM.');
    console.log('Élément DOM :', this.$el);
  },
  beforeUpdate() {
    console.log('beforeUpdate : Les données ont changé, le DOM n'a pas été mis à jour.');
  },
  updated() {
    console.log('updated : Le DOM a été mis à jour.');
  },
  beforeUnmount() {
    console.log('beforeUnmount : Le composant va être supprimé.');
  },
  unmounted() {
    console.log('unmounted : Le composant a été supprimé du DOM.');
  }
};