Vue 在更新 DOM 时是异步执行的。只要侦听到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发,只会被推入到队列中一次。
例如,当你设置 vm.someData = ‘new value’,该组件不会立即重新渲染。当刷新队列时,组件会在下一个事件循环“tick”中更新。为了在数据变化之后等待 Vue 完成更新 DOM,可以在数据变化之后立即使用 Vue.nextTick(callback)。这样回调函数将在 DOM 更新完成后被调用。

在根示例中

<div id="example">{{message}}</div>
var vm = new Vue({el: '#example',data: {message: '123'}
})
vm.message = 'new message' // 更改数据
vm.$el.textContent === 'new message' // false
Vue.nextTick(function () {vm.$el.textContent === 'new message' // true
})

组件中

Vue.component('example', {template: '<span>{{ message }}</span>',data: function () {return {message: '未更新'}},methods: {updateMessage: function () {this.message = '已更新'console.log(this.$el.textContent) // => '未更新'this.$nextTick(function () {console.log(this.$el.textContent) // => '已更新'})}}
})

因为 $nextTick() 返回一个 Promise 对象,所以你可以使用新的 ES2017 async/await 语法完成相同的事情:

methods: {updateMessage: async function () {this.message = '已更新'console.log(this.$el.textContent) // => '未更新'await this.$nextTick()console.log(this.$el.textContent) // => '已更新'}
}

vue 异步更新队列 Vue.nextTick(callback)相关推荐

  1. vue如何让一句代码只执行一次_lt;Vue 源码笔记系列4gt;异步更新队列与$nextTick...

    1. 前言 原文发布在语雀: <Vue 源码笔记系列4>异步更新队列与$nextTick · 语雀​www.yuque.com 上一章我们讲到了修改数据是如何触发渲染函数的观察者,最终调用 ...

  2. “约见”面试官系列之常见面试题第三十九篇之异步更新队列-$nextTick(建议收藏)

    目录 一,前言 二,什么是异步更新队列 三,使用异步更新队列 四,结尾 一,前言 这一篇介绍有关异步更新队列的知识,通过异步更新队列的学习和研究能够更好的理解Vue的更新机制 二,什么是异步更新队列 ...

  3. 批量异步更新策略及 nextTick 原理

    批量异步更新策略及 nextTick 原理 为什么要异步更新 通过前面几个章节我们介绍,相信大家已经明白了 Vue.js 是如何在我们修改 data 中的数据后修改视图了.简单回顾一下,这里面其实就是 ...

  4. vue 多个回调_Vue 进阶面试必问,异步更新机制和 nextTick 原理

    vue已是目前国内前端web端三分天下之一,同时也作为本人主要技术栈之一,在日常使用中知其然也好奇着所以然,另外最近的社区涌现了一大票vue源码阅读类的文章,在下借这个机会从大家的文章和讨论中汲取了一 ...

  5. 【Vue面试题】说说nextTick的使用和原理?

    分析 这道题及考察使用,有考察原理,nextTick在开发过程中应用的也较少,原理上和vue异步更新有密切关系,对于面试者考查很有区分度,如果能够很好回答此题,对面试效果有极大帮助. 答题思路 nex ...

  6. 渲染篇四:千方百计——Event Loop 与异步更新策略

    千方百计--Event Loop 与异步更新策略 Vue 和 React 都实现了异步更新策略.虽然实现的方式不尽相同,但都达到了减少 DOM 操作.避免过度渲染的目的.通过研究框架的运行机制,其设计 ...

  7. echars vue 添加数据没更新_vue在使用ECharts时的异步更新和数据加载详解

    前言 最近在学习eCharts,学习到了异步更新和数据加载这一块,觉着有必要总结一下,方法以后的时候参考学习,在开始本文之前,对eCharts不熟悉的朋友们可以参考下这篇文章:下面话不多说了,来一起看 ...

  8. 深入理解 vue DOM 更新时机

    vue3 官方文档中对 DOM 更新时机 的解释是 当你更改响应式状态后,DOM 也会自动更新.然而,你得注意 DOM 的更新并不是同步的.相反,Vue 将缓冲它们直到更新周期的 "下个时机 ...

  9. vue异步引入百度地图API

    看了下官网上的方法,是采用原生的写法,不适用于vue 异步引入的好处是baiduAK可以方便管理 import { baiduAk } from '@/settings'export function ...

  10. 易忘知识点整理(持续更新)——VUE使用

    1. 复习组件中自定义v-model指令使用: 组件中v-model最基本的用法:在父组件给子组件绑定v-model的时候,相当于绑定了自定义事件@input,v-model=后面传递的值,是子组件在 ...

最新文章

  1. 2019 年,容器技术生态会发生些什么?
  2. 小忆《记录博客一周年》
  3. BugkuCTF-reverse:入门逆向
  4. Python3实现简单可学习的手写体识别
  5. laravel-admin grid中使用switch操作一对一关联属性(源码探究到功能实现)
  6. html背景动起来,CSS+HTML 循环滚动背景效果
  7. 2021牛客暑期多校训练营7,签到题FHI
  8. requests 超时关闭_requests获取响应时间(elapsed)与超时(timeout)
  9. 谈谈CSMA/CD,TCP中的二进制指数退避算法
  10. 一位基金经理的投资减法:少看研报多读书,少搞勾兑多数数;少跑调研多呼噜,少开晨会多开悟
  11. nvidia怎么查看
  12. 经典育儿书籍推荐目录
  13. 使用Mac下的sequel Pro数据库错误MySQL said: Authentication plugin 'caching_sha2_password'
  14. 秉持技术普惠的华为,致力于无处不在的联接
  15. 骷髅创意设计灵感_20种创意旅行应用程序设计,激发您的灵感
  16. 简谈FIR滤波器和IIR滤波器的区别
  17. 程序员潜规则之痛——“JAVA 之父”也遭遇过
  18. python爬虫解决中文乱码和爬取美女图片
  19. Python搜索爬取淘宝商品信息并存储为csv文件(名称、店铺、销量、地址等)
  20. 苹果平板不用原装笔可以吗?值得入手的几款ipad触控笔

热门文章

  1. pillow安装出错的解决办法
  2. 在SqlMapConfig.xml 中typeAliases与properties的关系
  3. 98.TCP通信传输文件
  4. Unity插件学习记录 -- SW Actions
  5. 如何获取ezui tree 所有子节点
  6. 关于TcpClient,Socket连接超时的几种处理方法
  7. (论坛答疑点滴)怎么给Table动态添加控件并且得到控件的值?
  8. 上下求索——基于双向推理的多跳知识库问答技术
  9. 2021我的互联网秋招算法岗总结
  10. 【ACL2020】五篇与文本理解相关的论文