Vue: Os hooks de ciclo de vida que você precisa saber

Javascript

Vue 3, com a sua composition API, trouxe uma maneira nova e melhor de lidar com o ciclo de vida dos componentes. Entender o ciclo de vida do Vue 3 é essencial pra todo desenvolvedor que quer aproveitar o máximo desse framework frontend. Vamos ver como funciona o ciclo de vida do Vue 3 usando a API de Composição, explorando as principais etapas e componentes envolvidos.

Visão Geral do Ciclo de Vida no Vue 3

No Vue 3, um componente nasce quando é criado e morre quando é destruído. Ele passa por várias fases no meio, cada uma com um propósito específico. Vamos dar uma olhada nessas fases para entender como elas funcionam.

Criação do Componente

O processo começa com a renderização (nascimento) de um componente Vue.

Ciclo de Vida no Vue 3: Renderizando o Componente
Ciclo Vida Vue 3: render

Quando um componente é instanciado, a função setup(), parte fundamental da API de Composição, é acionada. É nessa função que você define e organiza as propriedades, métodos e outros dados reativos do componente.

<script>
import { ref } from 'vue'

export default {
  setup() {
   // "ref" é usado para criar uma variável reativa
    const count = ref(0)

   // expor para o template e outros hooks da API de opções
    return {
      count
    }
  },

  mounted() {
    console.log(this.count) // 0
  }
}
</script>
Ciclo Vida Vue 3: Setup

No entanto, se você estiver usando composition API com Componentes de Arquivo Único (Single-File Components), <script setup> é a melhor opção pra uma sintaxe mais enxuta e fácil de usar, e é essa a sintaxe que vamos usar nesse post.

<script setup>
  import { ref, onMounted } from 'vue'

  const count = ref(0)
  
  onMounted(() => {
    console.log(this.count) // 0
  })
</script>

Hooks do Ciclo de Vida

O conceito de hooks no ciclo de vida do Vue nos permite executar código em diferentes estágios da vida de um componente. Esses métodos são estrategicamente posicionados para rodar código em momentos específicos da jornada de um componente.

Por exemplo, você pode usar um hook para inicializar dados quando o componente é criado, ou para atualizar o componente quando ele recebe um novo evento. Os hooks oferecem uma maneira estruturada e eficaz de gerenciar o comportamento de um componente ao longo de seu ciclo de vida. A partir de agora, vou te mostrar (quase) todos os hooks do Vue, caso você ainda não os conheça.

Hook do Vue 3: onBeforeMount()

O onBeforeMount() é o nosso primeiro hook do ciclo de vida do Vue, que é chamado antes mesmo que o componente seja renderizado pela primeira vez.

Nesse momento, o componente já terminou de configurar seu estado e suas configurações (setup()), mas ainda não foi anexado ao DOM.

Em outras palavras, o onBeforeMount() é a hora de você fazer qualquer coisa que precise ser feita antes que o componente apareça na tela, mas depois que o estado e as configurações do componente já tenham sido configurados.

onBeforeMount(() => {
// Lógica a ser executada antes do componente ser montado
});

Ciclo Vida Vue 3: onBeforeMount

Casos de uso comun para o hook onBeforeMount incluem:

  • Tarefas de inicialização que devem ser realizadas antes do componente se tornar visível.
  • Buscar dados iniciais de uma fonte externa ou API.
  • Configurar ou subscrever listeners de eventos.

Dica: qualquer coisa que você alterar no estado do componente no onBeforeMount() vai aparecer na tela na primeira renderização. Se você precisar fazer alguma coisa depois que o componente estiver montado, use o próximo hook.

Renderização Inicial

A renderização inicial no Vue 3 é mais uma etapa do ciclo de vida. A sintaxe setup facilita tudo, porque combina várias etapas em uma só. Pra quem não está familiarizado com alguns dos termos, vamos dar uma explicada nos conceitos-chave envolvidos:

O processo de renderização inicial funciona assim:

  1. Compilação e Função de Renderização:
    • O Vue compila o template e gera automaticamente a função de renderização com base no bloco setup.
  2. Criação de Estado Reativo:
    • Variáveis declaradas no bloco setup, como o count que vimos no primeiro exemplo, tornam-se reativas. Isso significa que alterações nessas variáveis acionam reatividade no componente.
  3. Criação do DOM Virtual:
    • O DOM virtual é criado automaticamente com base no template e no estado reativo.
  4. Criação e Inserção de Nós no DOM:
    • O Vue cria automaticamente os nós do DOM necessários com base no DOM virtual e os insere no DOM real.
  5. Montagem Automática:
    • Com a sintaxe setup, você não precisa de um hook de montagem separado. O código após o bloco setup é executado automaticamente após o componente ser montado.
Ciclo Vida Vue 3: Renderização Inicial

Hook do Vue 3: onMounted()

Após a renderização inicial, o hook onMounted() é chamado. Esse hook faz parte da API de Composição e é usado para executar lógica ou tarefas após um componente ter sido montado no DOM.

onMounted(() => {
  // Lógica a ser executada quando o componente é montado
});
Ciclo Vida Vue 3: onMounted

O hook onMounted() é especialmente útil para tarefas que exigem acesso ao DOM, pois ele garante que o componente tenha sido totalmente renderizado e inserido no documento.

Casos de uso comun para o hook onMounted incluem:

  • Inicializar bibliotecas ou plugins de terceiros.
  • Buscar dados iniciais de uma API.
  • Aplicar estilos CSS com base em condições dinâmicas.

O hook onMounted() é chamado após o componente ser montado no DOM. Ele pode ser usado para executar lógica ou tarefas que dependem do DOM estar disponível, como inicializar um serviço, fazer uma requisição HTTP ou anexar um evento ao DOM.

Após isso, o componente está finalmente montado.

Ciclo Vida Vue 3: mounted

Hook do Vue 3: onBeforeUpdate

O hook onBeforeUpdate() é chamado antes do componente ser atualizado. Ele é útil pra fazer coisas que precisam ser feitas antes da atualização. Por exemplo, você pode usar o hook onBeforeUpdate() pra limpar o DOM ou pra preparar o componente pra uma nova atualização.

onBeforeUpdate(() => {
  // Lógica a ser executada antes da atualização do componente
});
Ciclo Vida Vue 3: onBeforeUpdate

Casos de uso comun para o hook onBeforeUpdate incluem:

  • Realizar tarefas de limpeza ou desmontagem antes de uma nova renderização.
  • Comparar o estado atual com o estado futuro para operações específicas.
  • Interagir com serviços externos ou APIs para sincronizar dados.

Lembre que se você mudar o estado reativo no hook onBeforeUpdate(), o componente não vai ser renderizado novamente.

Em Vue, uma variável “reativa” é aquela que atualiza a interface do usuário automaticamente quando seu valor muda. Vue usa um sistema de reatividade pra garantir que a interface do usuário esteja sempre de acordo com os dados. Quando você declara uma variável na função setup() usando a API de Composição ou no corpo do <script setup>, o Vue a torna reativa. Isso significa que o Vue rastreia as alterações nessa variável e atualiza a interface do usuário automaticamente quando necessário.

Hook do Vue 3: onUpdated

O hook onUpdated() é chamado logo depois que um componente e seus componentes filhos são atualizados no DOM. Ele é útil quando você precisa executar lógica que depende do estado atualizado do componente ou quando você quer fazer algo depois que o componente é re-renderizado.

onUpdated(() => {
// Lógica a ser executada quando o componente é atualizado
});
Ciclo Vida Vue 3: onUpdated

Casos de uso comun para o hook onUpdated incluem:

  • Buscar Dados Atualizados: Imagine que seu componente acabou de receber uma reformulação e agora você precisa de dados atualizados para acompanhar. Aí que entra o onUpdated(). Você pode iniciar uma chamada de API ou obter novas informações no exato momento em que o componente muda.
  • Ajustes Dinâmicos na Interface do Usuário: Talvez seu componente precise reagir dinamicamente às suas próprias alterações. O onUpdated() é perfeito para ajustar a interface do usuário com base no estado mais recente.
  • Manuseio de Eventos Externos: Se o seu componente está conectado a eventos ou serviços externos, o onUpdated() é o momento de sincronizar tudo. Seja lidando com novas mensagens, atualizações de outros componentes ou qualquer outra coisa.

Hook do Vue 3: onBeforeUnmount

No Vue 3, o hook onBeforeUnmount() faz parte da API de Composição e desempenha um papel crucial logo antes de um componente ser desmontado ou destruído. Este hook oferece um espaço para você realizar tarefas de limpeza ou finalizações imediatamente antes do Vue remover o componente da DOM.

onBeforeUnmount(() => {
// Lógica a ser executada antes do desmonte do componente
});
Ciclo Vida Vue 3: onBeforeUnmount

Casos de uso comun para o hook onBeforeUnmount incluem:

  • Limpar recursos como temporizadores ou assinaturas.
  • Cancelar o registro de listeners de eventos.
  • Realizar qualquer limpeza necessária antes que o componente seja removido do DOM.

O hook onBeforeUnmount() é chamado antes do componente ser desmontado. Ele é útil para fazer tarefas de limpeza, como limpar o DOM, cancelar requisições HTTP ou remover listeners de eventos. Isso ajuda a manter a aplicação Vue limpa e eficiente, evitando vazamentos de memória e outros problemas.

Hook do Vue 3: onUnmounted

O hook onUnmounted() é chamado quando o componente é desmontado da DOM. Assim como o onBeforeUnmount() ele é útil para liberar recursos que o componente não precisa mais, como listeners de eventos, requisições HTTP ou elementos DOM.

onUnmounted(() => {
// Lógica a ser executada quando o componente é desmontado
});
Ciclo Vida Vue 3: onUnmounted

Casos de uso comun para o hook onUnmounted incluem:

  • Desconectar de um WebSocket
  • Cancelar o registro de listeners de eventos.
  • Destruir objetos ou dependências

O hook onUnmounted() é uma maneira de fazer o componente mandar embora os recursos que ele não precisa mais antes de ir embora. Isso ajuda a liberar recursos de maneira eficiente e evita problemas como vazamentos de memória. Essa prática é importante para manter a aplicação Vue funcionando bem e evitando problemas.

Encerrando:

Pronto, concluímos nossa jornada pelo ciclo de vida do Vue 3! Compreender como os componentes ganham vida, mudam e, eventualmente, se despedem é fundamental para liberar todo o potencial do Vue. Esses hooks, como onBeforeUpdate() e onUnmounted(), são recursos essenciais nessa jornada

Então, à medida que você continua aprendendo sobre o Vue e sua API de Composição, mantenha esses hooks em sua caixa de ferramentas. Boa codificação, e que sua jornada com o Vue seja suave e sem problemas!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

0 Comments