Коли викликається destroyed?
Залежно від версії Vue хук називається по-різному:
- Vue 2:
beforeDestroyіdestroyed - Vue 3:
beforeUnmountіunmounted(destroyedу Vue 3 більше не існує)
Тож відповім для Vue 2, як у питанні, і дам еквівалент для Vue 3 - це важливо на співбесіді.
Коли викликається destroyed (Vue 2)?
Хук destroyed викликається тоді, коли компонент повністю знищено:
- видалено з DOM
- видалено його реактивність
- розірвано дерево компонентів
- видалено спостерігачів (watchers)
- компонента більше НЕ існує
Простіше кажучи:
destroyedвикликається після остаточного видалення компонента з DOM і очищення всіх його ресурсів.
Типовий життєвий цикл Vue 2 при знищенні
beforeDestroy → компонент ще живий, можна очистити слухачі
destroyed → компонент повністю видаленийПриклад (Vue 2):
js
export default {
destroyed() {
console.log("Компонент видалено з DOM");
}
}Спрацьовує, наприклад, коли v-if став false:
html
<MyComponent v-if="show" />js
show = false; // → destroyed викликаєтьсяЩо можна робити в destroyed?
- чистити таймери (
clearInterval,clearTimeout) - відписуватися від подій (
removeEventListener) - закривати з'єднання (WebSocket)
- зупиняти сторонні бібліотеки
- скасовувати підписки на зовнішні API
Це фінальна точка життя компонента.
Важливо: destroyed НЕ викликається при v-show
html
<MyComponent v-show="visible" />Якщо visible змінився - компонент залишається в DOM, лише приховується.
destroyed НЕ буде викликано.
Аналог у Vue 3
У Vue 3 хуки перейменовано:
beforeDestroy→beforeUnmountdestroyed→unmounted
Приклад:
js
import { onUnmounted } from "vue";
onUnmounted(() => {
console.log("Компонент видалено у Vue 3");
});Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.