Ciclo de Vida de um Componente - Vue.js
O ciclo de vida de um componente Vue.js é composto por uma série de etapas que descrevem seu funcionamento desde a criação até que ele seja desmontado. O framework Vue disponibiliza métodos específicos para executar ações em momentos determinados durante essas etapas do ciclo de vida.
O ciclo completo pode ser descrito assim:
A função
é chamada junto com o métodoVue.createApp()
, o que inicia a configuração da aplicação Vue.mount()
Após a inicialização, mas antes da configuração de propriedades, métodos e handlers de eventos, o método
é chamado.beforeCreate()
Em seguida, o objeto Vue é criado, e suas propriedades, métodos e handlers de eventos são configurados.
Após a criação e configuração do objeto Vue, o método
é chamado. Nesse momento, o objeto Vue ainda não está associado a nenhum elemento HTML da página.created()
O próximo passo é a compilação do template: o código HTML que define a estrutura do componente.
O método
é executado.beforeMount()
O elemento HTML especificado no método
é substituído pelo template compilado.mount()
Após essa substituição, o método
é chamado. Isso marca o momento em que o template está associado ao DOM, permitindo interações com ele.mounted()
Durante a execução da aplicação, quando há alterações nos dados, outros estágios do ciclo de vida ocorrem:
Os dados são modificados.
O método
é chamado antes de qualquer alteração nos dados.beforeUpdate()
O DOM é re-renderizado para refletir as alterações no virtual DOM.
O método
é chamado após a atualização dos dados. Nesse momento, o DOM já foi re-renderizado para refletir as alterações.updated()
Quando um componente precisa ser removido da aplicação, o ciclo de vida segue estas etapas:
O método
é chamado logo antes de o componente ser desmontado.beforeUnmount()
Após desmontar o componente, o método
é executado.unmounted()
O diagrama a seguir ilustra o ciclo de vida de um componente Vue.js:
O código a seguir exemplifica a utilização dos métodos do ciclo de vida de um componente Vue.js:
<!DOCTYPE html>
<html>
<head>
<title>Explorando o Ciclo de Vida do Vue.js</title>
<meta charset="utf-8" />
</head>
<body>
<script src="https://unpkg.com/vue"></script>
<h3>Ciclo de Vida do Vue.js</h3>
<div id="app">
<h2>{{message}}</h2>
<button @click="message='Updated'">Update</button>
</div>
<script>
const vueApp = Vue.createApp({
data() {
return { message: 'Welcome to Vue.js' };
},
beforeCreate() {
console.log('beforeCreate()');
},
created() {
console.log('created()');
},
beforeMount() {
console.log('beforeMount()');
},
mounted() {
console.log('mounted()');
},
beforeUpdate() {
console.log('beforeUpdate()');
},
updated() {
console.log('updated()');
},
beforeUnmount() {
console.log('beforeUnmount()');
},
unmounted() {
console.log('unmounted()');
}
});
vueApp.mount('#app');
setTimeout(() => vueApp.unmount('#app'), 10000);
</script>
</body>
</html>
Neste exemplo, o método setTimeout()
unmount()
vueApp
No console do navegador, é possível observar a sequência de eventos do ciclo de vida sendo registrados. Quando o botão "Update" é pressionado, o DOM é atualizado, acionando os métodos beforeUpdate()
updated()
vueApp.unmount()
beforeUnmount()
unmounted()