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

相关推荐
无懈可击19 分钟前
Vue 低代码可视化 AI 表单设计器 FcDesigner v3.5 版本发布!
前端·vue.js·前端框架
Web - Anonymous23 分钟前
Vue3 + Element Plus 集成 JSON Editor 实现实时校验 JSON 编辑器(高亮/暗亮主题/分栏回显/组件复用) - 附完整示例
vue.js·编辑器·json
斯内普吖1 小时前
(开源)农产品电商系统实战指南 基于 Java + SpringBoot + Vue + MySQL
java·vue.js·spring boot·mysql·开源
daols882 小时前
vue 甘特图 vxe-gantt 紧前紧后依赖关系连接线配置详解
前端·vue.js·甘特图
剑胆琴心静水深流14 小时前
全栈之路6---web集成与呈现
前端·vue.js·spring boot·分布式·spring·前端框架·npm
Y001112361 天前
springboot+vue项目实战
vue.js·spring boot·后端
小白勇闯网安圈1 天前
Vue 工程化开发:组件复用、插槽、项目结构与 ES6 模块化
javascript·vue.js·es6
岁岁种桃花儿1 天前
Vue核心语法第十四篇:列表过滤
前端·javascript·vue.js
常宇佳1 天前
vue3 实战系列之踩过的一些坑
javascript·vue.js·elementui
孙克旭_2 天前
Docker 镜像构建|Vue+SpringBoot+Go 多语言项目 Dockerfile 案例
linux·运维·vue.js·spring boot·docker·dockerfile