Sobes.tech
Middle

Fale sobre o ciclo de vida de um componente no Vue.js.

sobes.tech IA

Resposta da IA

O ciclo de vida de um componente Vue.js é um conjunto de hooks que são chamados em diferentes fases da sua existência: desde a criação até à destruição.

Hooks principais:

  1. Criação:

    • beforeCreate: O componente foi criado, mas os dados e métodos ainda não estão inicializados.
    • created: O componente foi criado, os dados e métodos estão inicializados, mas o DOM ainda não foi renderizado.
  2. Montagem:

    • beforeMount: O template foi compilado, mas o componente ainda não foi inserido no DOM.
    • mounted: O componente foi inserido no DOM, pode-se aceder aos elementos do DOM através de $el.
  3. Atualização:

    • beforeUpdate: Os dados do componente mudaram, mas o DOM ainda não foi atualizado.
    • updated: O DOM foi atualizado após a mudança de dados.
  4. Desmontagem:

    • beforeUnmount: O componente está a ser removido do DOM. Aqui pode-se limpar temporizadores, ouvintes de eventos, etc.
    • unmounted: O componente foi removido do DOM.

Além dos principais, existem hooks para depuração (Debug) e tratamento de erros (Error Handling):

  • renderTracked: Rastreia as dependências reativas durante a renderização.
  • renderTriggered: É chamado quando o componente deve ser renderizado novamente devido a uma mudança no estado reativo.
  • errorCaptured: Captura erros que ocorreram em componentes filhos.
// Exemplo de uso de hooks
export default {
  data() {
    return {
      message: 'Olá Vue!'
    };
  },
  beforeCreate() {
    console.log('beforeCreate: O componente foi criado, os dados e métodos ainda não estão disponíveis.');
  },
  created() {
    console.log('created: O componente foi criado, os dados e métodos estão disponíveis.');
    console.log('Mensagem:', this.message);
  },
  beforeMount() {
    console.log('beforeMount: O template foi compilado.');
  },
  mounted() {
    console.log('mounted: O componente foi inserido no DOM.');
    console.log('Elemento DOM:', this.$el);
  },
  beforeUpdate() {
    console.log('beforeUpdate: Os dados mudaram, o DOM não foi atualizado.');
  },
  updated() {
    console.log('updated: O DOM foi atualizado.');
  },
  beforeUnmount() {
    console.log('beforeUnmount: O componente está a ser removido.');
  },
  unmounted() {
    console.log('unmounted: O componente foi removido do DOM.');
  }
};