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 :
-
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.
-
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.
-
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.
-
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.');
}
};