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 教程

Vue 首页 Vue 简介 Vue 指令 Vue v-bind Vue v-if Vue v-show Vue v-for Vue 事件 Vue v-on Vue 方法 Vue 事件修饰符 Vue 表单 Vue v-model Vue CSS 绑定 Vue 计算属性 Vue 侦听器 Vue 模板

扩展 应用程序

Vue 为什么、如何以及设置 Vue 第一个 SFC 页面 Vue 组件 Vue 属性 Vue v-for 组件 Vue $emit() Vue 透传属性 Vue 作用域样式 Vue 局部组件 Vue 插槽 Vue v-slot Vue 作用域插槽 Vue 动态组件 Vue 传送门 Vue HTTP 请求 Vue 模板引用 Vue 生命周期钩子 Vue 提供/注入 Vue 路由 Vue 表单输入 Vue 动画 Vue v-for 动画 Vue 构建 Vue Composition API

Vue 参考

Vue 内置属性 Vue 内置组件 Vue 内置元素 Vue 组件实例 Vue 指令 Vue 实例选项 Vue 生命周期钩子

Vue 示例

Vue 示例 Vue 练习 Vue 测验 Vue 服务器 Vue 证书

Vue $nextTick() 方法


示例

使用 $nextTick() 方法等待 DOM 更新,然后再获取 <p> 标签内的消息。

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())');
    });
  }
}
运行示例 »

查看下方更多示例。


定义和用法

The $nextTick() 方法等待 DOM 更新后再执行。

我们使用 this.$nextTick() 来等待当前 Vue 组件的 DOM 更新周期完成。

参数 描述
回调函数 可选。提供的回调函数将在 DOM 更新后运行(参见上面的示例)。$nextTick() 方法也可以在没有参数的情况下使用(参见下面的示例)。

除了 this.$nextTick() 之外,还有一个全局的 nextTick() 方法,可以用来等待 DOM 更新,即使是在特定组件范围之外。

注意:在 Vue 中,当一个响应式变量发生变化时,DOM 不会立即更新。Vue 会保存这些变化,并在 "下一个 tick" 发生时应用它们。这样做是为了提高性能并确保 Vue 实例与 DOM 之间的一致性。


更多示例

示例

与第一个示例相同的结果可以通过在异步方法中使用 await 前缀调用 $nextTick() 方法来实现。这会导致代码的下一行被暂停,直到 "下一个 tick" 发生。

<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>
运行示例 »

相关页面

JavaScript 教程: JavaScript 异步

Vue 教程: Vue 方法

Vue 教程: Vue 模板引用

Vue 教程: Vue v-on

Vue 教程: Vue 事件修饰符

Vue 参考: Vue 'ref' 属性

Vue 参考: Vue $refs 对象


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.