Sobes.tech
Middle

Vorbiți despre ciclul de viață al unui component în Vue.js.

sobes.tech AI

Răspuns de la AI

Ciclul de viață al unui component Vue.js este o serie de hooks care sunt apelate în diferite etape ale existenței sale: de la creare până la distrugere.

Hooks principale:

  1. Creare:

    • beforeCreate: Componentea a fost creată, dar datele și metodele încă nu sunt inițializate.
    • created: Componentea a fost creată, datele și metodele sunt inițializate, dar DOM-ul nu a fost încă redat.
  2. Montare:

    • beforeMount: Șablonul a fost compilat, dar componenta nu a fost încă inserată în DOM.
    • mounted: Componentea a fost inserată în DOM, se poate accesa elementele DOM prin $el.
  3. Actualizare:

    • beforeUpdate: Datele componentei s-au schimbat, dar DOM-ul nu a fost încă actualizat.
    • updated: DOM-ul a fost actualizat după schimbarea datelor.
  4. Demontare:

    • beforeUnmount: Componentea este pe cale să fie eliminată din DOM. Aici se pot curăța temporizatoare, ascultători de evenimente etc.
    • unmounted: Componentea a fost eliminată din DOM.

Pe lângă principale, există hooks pentru depanare (Debug) și gestionarea erorilor (Error Handling):

  • renderTracked: Monitorizează dependențele reactive în timpul randării.
  • renderTriggered: Se apelează când componenta trebuie re-redată din cauza unei schimbări în starea reactivă.
  • errorCaptured: Capturează erorile apărute în componentele copil.
// Exemplu de utilizare a hooks
export default {
  data() {
    return {
      message: 'Salut Vue!'
    };
  },
  beforeCreate() {
    console.log('beforeCreate: Componentea a fost creată, datele și metodele nu sunt disponibile.');
  },
  created() {
    console.log('created: Componentea a fost creată, datele și metodele sunt disponibile.');
    console.log('Mesaj:', this.message);
  },
  beforeMount() {
    console.log('beforeMount: Șablonul a fost compilat.');
  },
  mounted() {
    console.log('mounted: Componentea a fost inserată în DOM.');
    console.log('Element DOM:', this.$el);
  },
  beforeUpdate() {
    console.log('beforeUpdate: Datele s-au schimbat, DOM-ul nu a fost actualizat.');
  },
  updated() {
    console.log('updated: DOM-ul a fost actualizat.');
  },
  beforeUnmount() {
    console.log('beforeUnmount: Componentea urmează să fie eliminată.');
  },
  unmounted() {
    console.log('unmounted: Componentea a fost eliminată din DOM.');
  }
};