Middle
Opowiedz o cyklu życia komponentu w Vue.js.
sobes.tech AI
Odpowiedź od AI
Cykl życia komponentu Vue.js to zbiór hooków wywoływanych na różnych etapach jego istnienia: od utworzenia do zniszczenia.
Główne hooki:
-
Tworzenie:
beforeCreate: Komponent został utworzony, ale dane i metody jeszcze nie są zainicjowane.created: Komponent został utworzony, dane i metody są zainicjowane, ale DOM jeszcze nie jest wyrenderowany.
-
Montowanie:
beforeMount: Szablon został skompilowany, ale komponent jeszcze nie został dodany do DOM.mounted: Komponent został dodany do DOM, można uzyskać dostęp do elementów DOM przez$el.
-
Aktualizacja:
beforeUpdate: Dane komponentu się zmieniły, ale DOM jeszcze nie został zaktualizowany.updated: DOM został zaktualizowany po zmianie danych.
-
Odmontowanie:
beforeUnmount: Komponent jest usuwany z DOM. Tutaj można wyczyścić timery, nasłuchiwacze zdarzeń itp.unmounted: Komponent został usunięty z DOM.
Oprócz głównych, dostępne są hooki do debugowania (Debug) i obsługi błędów (Error Handling):
renderTracked: Śledzi zależności reaktywne podczas renderowania.renderTriggered: Wywoływany, gdy komponent musi zostać ponownie wyrenderowany z powodu zmiany stanu reaktywnego.errorCaptured: Przechwytuje błędy występujące w komponentach potomnych.
// Przykład użycia hooków
export default {
data() {
return {
message: 'Witaj Vue!'
};
},
beforeCreate() {
console.log('beforeCreate: Komponent został utworzony, dane i metody nie są dostępne.');
},
created() {
console.log('created: Komponent został utworzony, dane i metody są dostępne.');
console.log('Wiadomość:', this.message);
},
beforeMount() {
console.log('beforeMount: Szablon został skompilowany.');
},
mounted() {
console.log('mounted: Komponent został dodany do DOM.');
console.log('Element DOM:', this.$el);
},
beforeUpdate() {
console.log('beforeUpdate: Dane się zmieniły, DOM nie został jeszcze zaktualizowany.');
},
updated() {
console.log('updated: DOM został zaktualizowany.');
},
beforeUnmount() {
console.log('beforeUnmount: Komponent jest usuwany.');
},
unmounted() {
console.log('unmounted: Komponent został usunięty z DOM.');
}
};