【vue】nextTick的使用

简言

nextTick是Vue等待下一次 DOM 更新刷新的工具方法。

当我们更新dom数据后,需要在后面立即获取更新后的页面数据,就可以使用它。

nextTick

当你在 Vue 中更改响应式状态时,最终的 DOM 更新并不是同步生效的,而是由 Vue 将它们缓存在一个队列中,直到下一个"tick"才一起执行。这样是为了确保每个组件无论发生多少状态改变,都仅执行一次更新。

nextTick() 可以在状态改变后立即使用,以等待 DOM 更新完成。你可以传递一个回调函数作为参数,或者 await 返回的 Promise。

注意:

  • nextTick是vue实例里的方法,要在vue组件里使用。
  • 异步方法。
javascript 复制代码
<script>
import { nextTick } from 'vue'

export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    async increment() {
      this.count++

      // DOM 还未更新
      console.log(document.getElementById('counter').textContent) // 0

      await nextTick()
      // DOM 此时已经更新
      console.log(document.getElementById('counter').textContent) // 1
    }
  }
}
</script>

<template>
  <button id="counter" @click="increment">{{ count }}</button>
</template>

结语

nextTick涉及到js的事件循环机制,通过setTimeout(fn,0)可以实现它,或者使用比较新的专用事件处理api MutationObserver 。

nextTick是一个较为重要的方法,恰当的使用它可以解决问题和提高性能。

相关推荐
竟未曾年少轻狂38 分钟前
Vue3 生命周期钩子
前端·javascript·vue.js·前端框架·生命周期
TT哇43 分钟前
【实习】数字营销系统 银行经理端(interact_bank)前端 Vue 移动端页面的 UI 重构与优化
java·前端·vue.js·ui
用户982450514181 小时前
vue3响应式解构注意
vue.js
不会敲代码11 小时前
🚀 从DOM操作到Vue3:一个Todo应用的思维革命
vue.js
未来龙皇小蓝2 小时前
RBAC前端架构-02:集成Vue Router、Vuex和Axios实现基本认证实现
前端·vue.js·架构
晓得迷路了2 小时前
栗子前端技术周刊第 116 期 - 2025 JS 状态调查结果、Babel 7.29.0、Vue Router 5...
前端·javascript·vue.js
淡忘_cx2 小时前
使用Jenkins自动化部署vue项目(2.528.2版本)
vue.js·自动化·jenkins
iDao技术魔方3 小时前
深入Vue 3响应式系统:为什么嵌套对象修改后界面不更新?
javascript·vue.js·ecmascript
念念不忘 必有回响3 小时前
viepress:vue组件展示和源码功能
前端·javascript·vue.js
吹牛不交税13 小时前
admin.net-v2 框架使用笔记-netcore8.0/10.0版
vue.js·.netcore