Какие хуки жизненного цикла есть у компонента Vue?
JuniorVue.js #vue #lifecycle
Вопрос
Какие есть хуки жизненного цикла компонента во Vue 3 и когда они вызываются?
Короткий ответ
Основные хуки в Composition API: onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted — они отражают этапы создания, обновления и удаления компонента.
Подробный ответ
onMounted— компонент вставлен в DOM. Здесь безопасно обращаться кrefDOM-элементов, делать запросы к API, подписываться на внешние события.onUpdated— DOM обновился после изменения реактивных данных. Использовать осторожно — можно случайно вызвать бесконечный цикл обновлений.onUnmounted— компонент удалён из DOM. Место для очистки: снятие обработчиков событий, отмена таймеров/подписок (утечки памяти — частая ошибка при их пропуске).onBeforeMount/onBeforeUpdate/onBeforeUnmount— те же события, но до применения изменений.
В <script setup> эти хуки — обычные импортируемые функции, вызываются напрямую в теле компонента (не внутри условий/циклов — как и любые хуки Vue/React).
Пример
<script setup>
import { onMounted, onUnmounted, ref } from 'vue'
const width = ref(window.innerWidth)
function handleResize() {
width.value = window.innerWidth
}
onMounted(() => window.addEventListener('resize', handleResize))
onUnmounted(() => window.removeEventListener('resize', handleResize))
</script>
Дополнительные вопросы
- Почему обработчики нужно снимать в
onUnmounted? - В чём разница между
onMountedкомпонента иonMountedвнутри composable? - Как хуки жизненного цикла работают с
<KeepAlive>(onActivated/onDeactivated)?