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

相关推荐
yzhSWJ28 分钟前
Vue 3 中,将静态资源(如图片)转换为 URL
前端·javascript·vue.js
鱼樱前端1 小时前
基于Vue3+Ts+Vant的高级图片上传组件
前端·javascript·vue.js
Random_index2 小时前
#Vue篇:环境变量process.env.VUE_APP_API_URL&import.meta.env.VITE_API_URL
vue.js
周努力.2 小时前
关于Vue/React中Diffing算法以及key的作用
javascript·vue.js·react.js
lydxwj2 小时前
vue3自定义hooks遇到的问题
前端·javascript·vue.js
野生的程序媛2 小时前
重生之我在学Vue--第8天 Vue 3 UI 框架(Element Plus)
前端·vue.js·ui
前端付杰3 小时前
从Vue源码解锁位运算符:提升代码效率的秘诀
前端·javascript·vue.js
阿里巴巴P8资深技术专家4 小时前
使用vue3.0+electron搭建桌面应用并打包exe
前端·javascript·vue.js
刺客_Andy4 小时前
vue3 第二十九节 (vue3 事件循环之nextTick)
前端·vue.js
Slow菜鸟4 小时前
JavaScript与UniApp、Vue、React的关系
javascript·vue.js·uni-app