> Как дождаться перерендера шаблона после изменения реактивных данных во Vue (Vue.js)
Уровень: middle · Роль: frontend · Категория: Технические вопросы
Компании: ЛОЦИЯ
Стек: Vue.js
> Пример ответа
Чтобы дождаться перерендера шаблона после изменения реактивных данных во Vue, используйте метод nextTick. Vue обновляет DOM асинхронно после изменения данных, поэтому прямой доступ к обновлённому DOM сразу после мутации может вернуть старое состояние.
Пример с Composition API:
JAVASCRIPTimport { ref, nextTick } from 'vue'const count = ref(0)function increment() {count.value++// DOM ещё не обновлёнconsole.log(document.getElementById('counter').textContent) // старое значениеnextTick(() => {// DOM обновлёнconsole.log(document.getElementById('counter').textContent) // новое значение})}
Пример с Options API:
JAVASCRIPTexport default {data() {return { count: 0 }},methods: {increment() {this.count++this.$nextTick(() => {// DOM обновлёнconsole.log(this.$el.querySelector('#counter').textContent)})}}}
nextTick возвращает Promise, поэтому можно использовать await:
JAVASCRIPTasync function increment() {count.value++await nextTick()// DOM обновлён}
Этот механизм гарантирует, что колбэк выполнится после того, как Vue завершит все синхронные обновления и применит изменения к DOM.
> Похожие задачи по frontend
Как получить доступ к DOM элементам через ref в created и mounted хуках во Vue
В чем разница хуков mounted и beforeMount во Vue
В чем проблема watch с опцией deep во Vue и что он отслеживает
Как key влияет на перерендеринг шаблона во Vue
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью