nextTick() : Vue DOM update utility
The nextTick() function allows you to execute code after you have changed some data and Vue has updated the page to reflect your changes. Pass a callback to nextTick()and Vue will execute the callback immediately after updating the DOM.
In this Vue tutorial, we learn about how to Use the nextTick() Method.
const app = new Vue({
  data: () => ({ text: 'First' }),
  template: `<h1>{{text}}</h1>`,
  mounted: function() {
    this.text = 'Second';
    // Prints 'First', because Vue hasn't updated the DOM yet
    console.log(this.$el.textContent);
    this.$nextTick(() => {
      // Prints 'Second', because Vue has updated the DOM
      console.log(this.$el.textContent);
    });
  }
});
Alternatively, you can use Vue.nextTick(), which is the same thing as this.$nextTick().
const app = new Vue({
  data: () => ({ text: 'First' }),
  template: `<h1>{{text}}</h1>`,
  mounted: function() {
    this.text = 'Second';
    // Prints 'First', because Vue hasn't updated the DOM yet
    console.log(this.$el.textContent);
    Vue.nextTick(() => {
      // Prints 'Second', because Vue has updated the DOM
      console.log(this.$el.textContent);
    });
  }
});
With Promises
One neat advantage of Vue's nextTick() over the browser's setTimeout() function is that nextTick() returns a promise, so you can await on it.
const app = new Vue({
  data: () => ({ text: 'First' }),
  template: `<h1>{{text}}</h1>`,
  mounted: async function() {
    this.text = 'Second';
    // Prints 'First', because Vue hasn't updated the DOM yet
    console.log(this.$el.textContent);
    await Vue.nextTick();
    // Prints 'Second', because Vue has updated the DOM
    console.log(this.$el.textContent);
  }
});
Compostion API
<script setup>
import { ref, nextTick } from 'vue'
const count = ref(0)
async function increment() {
  count.value++
  // DOM not yet updated
  console.log(document.getElementById('counter').textContent) // 0
  await nextTick()
  // DOM is now updated
  console.log(document.getElementById('counter').textContent) // 1
}
</script>
<template>
  <button id="counter" @click="increment">{{ count }}</button>
</template>
credit: https://masteringjs.io

