Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Vue Tutorial

Vue HOME Vue Intro Vue Directives Vue v-bind Vue v-if Vue v-show Vue v-for Vue Events Vue v-on Vue Methods Vue Event Modifiers Vue Forms Vue v-model Vue CSS Binding Vue Computed Properties Vue Watchers Vue Templates

Scaling Up

Vue Why, How and Setup Vue First SFC Page Vue Components Vue Props Vue v-for Components Vue $emit() Vue Fallthrough Attributes Vue Scoped Styling Vue Local Components Vue Slots Vue v-slot Vue Scoped Slots Vue Dynamic Components Vue Teleport Vue HTTP Request Vue Template Refs Vue Lifecycle Hooks Vue Provide/Inject Vue Routing Vue Form Inputs Vue Animations Vue Animations with v-for Vue Build Vue Composition API

Vue Reference

Vue Built-in Attributes Vue Built-in Components Vue Built-in Elements Vue Component Instance Vue Directives Vue Instance Options Vue Lifecycle Hooks

Vue Examples

Vue Examples Vue Exercises Vue Quiz Vue Server Vue Certificate

Vue $nextTick() Method


Example

Using the $nextTick() method to wait for the DOM to update before we get the message inside the <p> tag.

methods: {
  updateMsg() {
    this.message = '"Hello! This is a new message."';
    this.results.push(this.$refs.pEl.textContent);
    this.$nextTick(() => {
      this.results.push(this.$refs.pEl.textContent + ' (using $nextTick())');
    });
  }
}
Run Example »

See more examples below.


Definition and Usage

The $nextTick() method waits for the DOM to update before executing.

We use this.$nextTick() to wait for the DOM update cycle of the current Vue component to finish.

Argument Description
callback function Optional. The callback function provided will run after the DOM is updated (see the example above). The $nextTick() method can also be used without an argument (see the example below).

In addition to this.$nextTick() there is also a global nextTick() method that can be used to wait for the DOM to update even from outside the scope of a specific component.

Note: In Vue, when a reactive variable is changed, the DOM is not updated immediately. Vue saves these changes instead, and applies them when the 'next tick' happens. This is to enhance performance and ensure consistency between the Vue instance and the DOM.


More Examples

Example

The same result as in the first example can be achieved by calling the $nextTick() method with the await prefix in an asynchronous method. This causes the next lines of code to be put on hold until the 'next tick' happens.

<template>
  <h2>Example $nextTick() Method</h2>
  <p>Using "await $nextTick()", the next lines of code will also wait until the 'next tick' happens.
  </p>
  <div>
    <p ref="messageEl">{{ message }}</p>
    <button v-on:click.once="updateMsg">Update Message</button>
    <ol>
      <li v-for="x in results">{{ x }}</li>
    </ol>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: "Initial Message",
      results: []
    };
  },
  methods: {
    async updateMsg() {
      this.message = "Hello! This message is now updated.";
      this.results.push(this.$refs.messageEl.textContent);
      await this.$nextTick();
      this.results.push(this.$refs.messageEl.textContent + ' (after await $nextTick())');
    }
  }
};
</script>

<style scoped>
div {
  border: solid black 1px;
  padding: 10px;
}
</style>
Run Example »

Related Pages

JavaScript Tutorial: JavaScript Async

Vue Tutorial: Vue Methods

Vue Tutorial: Vue Template Refs

Vue Tutorial: Vue v-on

Vue Tutorial: Vue Event Modifiers

Vue Reference: Vue 'ref' Attribute

Vue Reference: Vue $refs Object