【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是一个较为重要的方法,恰当的使用它可以解决问题和提高性能。

相关推荐
利刃大大1 小时前
【Vue】scoped作用 && 父子组件通信 && props && emit
前端·javascript·vue.js
-凌凌漆-1 小时前
【Vue】Vue3 vite build 之后空白
前端·javascript·vue.js
qq_336313931 小时前
javaweb-Vue3
前端·javascript·vue.js
Mr Xu_1 小时前
UniApp 实战:深度解析 App 端自动检测与静默更新(含强制更新)
javascript·vue.js·uni-app
mc_故事与你2 小时前
前后端分离项目(springboot+vue+mybatis)-教学文档(SpringBoot3+Vue2)-4 (正在编写)
vue.js·spring boot·mybatis
HWL56792 小时前
vue抽离自定义指令的方法
前端·javascript·vue.js
宁雨桥2 小时前
Vue项目中iframe嵌入页面实现免登录的完整指南
前端·javascript·vue.js
LongJ_Sir3 小时前
Cesium--可拖拽气泡弹窗(对话框尾巴,Vue3版)
前端·javascript·vue.js
一 乐3 小时前
在线考试|基于springboot + vue在线考试系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
qq_12498707533 小时前
基于spring boot的调查问卷系统的设计与实现(源码+论文+部署+安装)
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计