this.$nextTick()

this.$nextTick()将回调延迟到下次DOM 更新循环之后执行。在修改数据之后立即使用它,然后等带DOM更新。它跟全局方法Vue.nextTick一样,不同的是回调的this自动绑定到调用它的实例上。

假设我们更改了某个DOM元素内部的文本,而这时我们想直接打印出这个被改变后的文本是需要DOM更新之后才会实现的,也就好比我们将打印输出的代码放在setTimeout(fn,0)中;

<template><section><div ref="hello"><h1>Hello World ~</h1></div><el-button type="danger" @click="get">点击</el-button></section>
</template>
<script>export default {methods: {get() {}},mounted() {console.log(333);console.log(this.$refs['hello']);this.$nextTick(() => {console.log(444);console.log(this.$refs['hello']);});},created() {console.log(111);console.log(this.$refs['hello']);this.$nextTick(() => {console.log(222);console.log(this.$refs['hello']);});}}
</script>


可以根据打印的顺序看到,在created()钩子函数执行的时候,只是实例完成了模板的编译,此时还没有初始化好 data 和 methods属性 。DOM 其实并未进行任何渲染,而此时进行DOM操作并无作用,而在created()里使用this.$nextTick()可以等待dom生成以后再来获取dom对象。

<template><section><h1 ref="hello">{{ value }}</h1><el-button type="danger" @click="get">点击</el-button></section>
</template>
<script>export default {data() {return {value: 'Hello World ~'};},methods: {get() {this.value = '你好啊';console.log(this.$refs['hello'].innerText);this.$nextTick(() => {console.log(this.$refs['hello'].innerText);});}},mounted() {},created() {}}
</script>


根据上面的例子可以看出,在方法里直接打印的话, 由于dom元素还没有更新, 因此打印出来的还是未改变之前的值( data 中value:‘Hello World ~’),而通过this.$nextTick()获取到的值为dom更新之后的值( methods 属性 get 方法中 this.value = ‘你好啊’)。

this.$nextTick()在页面交互,尤其是从后台获取数据后重新生成dom对象之后的操作有很大的优势,这里只是简单的例子,实际应用中更为好用~
嗯,就酱~~

Vue.js中this.$nextTick()的使用相关推荐

  1. 工作238:Vue.js中this.$nextTick()的使用

    this.$nextTick()将回调延迟到下次 DOM 更新循环之后执行.在修改数据之后立即使用它,然后等待 DOM 更新.它跟全局方法 Vue.nextTick 一样,不同的是回调的 this 自 ...

  2. echarts怎么用在php,在Vue.JS中怎样使用echarts

    这次给大家带来在Vue.JS中怎样使用echarts,在Vue.JS中使用echarts的注意事项有哪些,下面就是实战案例,一起来看一下. 上篇文章给大家介绍了 在 webpack 中使用 EChar ...

  3. Vue.js中的MVVM

    MVVM的理解 MVVM拆开来即为Model-View-ViewModel,有View,ViewModel,Model三部分组成.View层代表的是视图.模版,负责将数据模型转化为UI展现出来.Mod ...

  4. vue.js中mock本地json数据

    vue.js中mock本地json数据 新版本的vue项目中已经将dev-server.js,dev-client.js两个js文件合并到了webpack.dev.conf.js文件中,以下分别是新旧 ...

  5. VUE.js 中取得后台原生HTML字符串 原样显示问题

    今天使用vue调试页面,发现了页面上的一个问题,后台数据传过来的HTML字符串并没有被转换为正常的HTML代码,一拍脑门,发现忘记转换了,于是满心欢喜加上了{{{}}}.但是之后构建发现报错: 为此去 ...

  6. php动态写入vue,Vue.js中使用动态组件的方法

    本文介绍了如何在Vue.js中引用组件中的HTML元素.您可以通过使用Vue路由器或创建动态组件来切换视图或组件模板. Vue路由器用于在DOM中的视图或组件模板之间导航.要使用Vue路由器,请在ro ...

  7. 浅析Vue.js 中的条件渲染指令

    1 应用于单个元素 Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件. html: <div id="app"> < ...

  8. html5怎么改为vue_是否还在疑惑Vue.js中组件的data为什么是函数类型而不是对象类型...

    点击上方"前端印象",选择"设为星标"第一时间关注技术干货! 引言 要理解本篇文章,必须具备JavaScript中基本数据类型和引用数据类型的概念,大家可以花两 ...

  9. ie浏览器查看vue中js_浅析 Vue.js 中那些空间换时间的操作

    Hello,各位小伙伴,接下来的一段时间里,我会把我的课程<Vue.js 3.0 核心源码解析>中问题的答案陆续在我的公众号发布,由于课程的问题大多数都是开放性的问题,所以我的答案也不一定 ...

最新文章

  1. 端到端TVM编译器(上)
  2. 某leader求助:周六晚上拉下属开会,被下属怀孕的老婆公然大骂,怎么办?网友:活该!...
  3. Windows系统安装zabbix-agent客户端
  4. java 使用http2.0_【Java】okhttp3如何发送http2请求?
  5. Android魔法(第二弹)——一步步实现淹没、展开效果
  6. Python中类方法、类实例方法、静态方法,私有属性和私有方法有何区别?
  7. python电脑推荐_6款Python必备的可视化工具推荐
  8. Javascript 函数详解
  9. 图片测量尺寸软件_3D扫描之工件测量检测
  10. mysql查询自定义数据_实现自定义查询的数据库设计及实现(一)
  11. ubuntu16.04安装pycharm
  12. Objective-c官方文档 怎么自定义类
  13. 荣耀x10max能不能升级为鸿蒙,荣耀X10 Max即将亮相:容量很“放肆” 身材却很“克制”...
  14. 「日常训练」Queue(Codeforces Round 303 Div.2 D)
  15. 乘着创新的浪潮:协同运输机器人编队的基于模型的开发实施方案
  16. 超实用的pr视频制作视频过渡小技巧
  17. c语言思维导图(学习笔记)
  18. Apache主机如何强制HTTP重定向到HTTPS WorldPress
  19. Uncaught Error: A <Route> is only ever to be used as the child of <Routes> element, never rendered d
  20. Github上一个优秀的Python学习资源:AwesomePythonResource

热门文章

  1. iphone safari不支持position fixed的解决办法
  2. 今天开通android博客 该认真学习了
  3. javascript 继承、子类化
  4. CCF201509-5 最佳文章【AC自动机】(100分解题链接)
  5. HDU4841 圆桌问题【约瑟夫环+模拟+STL】
  6. NUC1776 Tiling Up Blocks【二维最长上升子序列+DP】
  7. POJ NOI MATH-7829 神奇序列求和
  8. 组态档(configuration file)与建构档
  9. matplotlib 可视化 —— matplotlib.patches
  10. C++设计模式——Composite 组合模式