> Как получить ref компонента сразу после его отрисовки при условном рендеринге во Vue (Vue.js)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: ЛОЦИЯ
Стек: Vue.js
> Пример ответа
В Vue 3 для получения ref компонента сразу после его отрисовки при условном рендеринге используйте nextTick в комбинации с watch или watchEffect. Это гарантирует, что DOM уже обновлён.
Пример:
<template> <div> <button @click="show = !show">Toggle</button> <div v-if="show" ref="myRef">Содержимое</div> </div> </template> <script setup> import { ref, watch, nextTick } from 'vue' const show = ref(false) const myRef = ref(null) watch(show, async (newVal) => { if (newVal) { await nextTick() // myRef.value теперь доступен console.log(myRef.value) // <div>Содержимое</div> } }) </script>
Ключевой момент: nextTick() дожидается завершения обновления DOM после изменения реактивного состояния. Без него myRef.value будет null, так как элемент ещё не отрендерен.
Для Vue 2 подход аналогичен, но используется this.$nextTick().
> Похожие задачи по frontend
Для чего нужен defineAsyncComponent во Vue и в каких кейсах его использовать
Как изменить состояние родительского компонента из дочерних компонентов во Vue
Для чего нужен provide/inject во Vue
Для чего нужен defineExpose во Vue 3
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью