Vue.js中this.$nextTick()的使用
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()的使用相关推荐
- 工作238:Vue.js中this.$nextTick()的使用
this.$nextTick()将回调延迟到下次 DOM 更新循环之后执行.在修改数据之后立即使用它,然后等待 DOM 更新.它跟全局方法 Vue.nextTick 一样,不同的是回调的 this 自 ...
- echarts怎么用在php,在Vue.JS中怎样使用echarts
这次给大家带来在Vue.JS中怎样使用echarts,在Vue.JS中使用echarts的注意事项有哪些,下面就是实战案例,一起来看一下. 上篇文章给大家介绍了 在 webpack 中使用 EChar ...
- Vue.js中的MVVM
MVVM的理解 MVVM拆开来即为Model-View-ViewModel,有View,ViewModel,Model三部分组成.View层代表的是视图.模版,负责将数据模型转化为UI展现出来.Mod ...
- vue.js中mock本地json数据
vue.js中mock本地json数据 新版本的vue项目中已经将dev-server.js,dev-client.js两个js文件合并到了webpack.dev.conf.js文件中,以下分别是新旧 ...
- VUE.js 中取得后台原生HTML字符串 原样显示问题
今天使用vue调试页面,发现了页面上的一个问题,后台数据传过来的HTML字符串并没有被转换为正常的HTML代码,一拍脑门,发现忘记转换了,于是满心欢喜加上了{{{}}}.但是之后构建发现报错: 为此去 ...
- php动态写入vue,Vue.js中使用动态组件的方法
本文介绍了如何在Vue.js中引用组件中的HTML元素.您可以通过使用Vue路由器或创建动态组件来切换视图或组件模板. Vue路由器用于在DOM中的视图或组件模板之间导航.要使用Vue路由器,请在ro ...
- 浅析Vue.js 中的条件渲染指令
1 应用于单个元素 Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件. html: <div id="app"> < ...
- html5怎么改为vue_是否还在疑惑Vue.js中组件的data为什么是函数类型而不是对象类型...
点击上方"前端印象",选择"设为星标"第一时间关注技术干货! 引言 要理解本篇文章,必须具备JavaScript中基本数据类型和引用数据类型的概念,大家可以花两 ...
- ie浏览器查看vue中js_浅析 Vue.js 中那些空间换时间的操作
Hello,各位小伙伴,接下来的一段时间里,我会把我的课程<Vue.js 3.0 核心源码解析>中问题的答案陆续在我的公众号发布,由于课程的问题大多数都是开放性的问题,所以我的答案也不一定 ...
最新文章
- 端到端TVM编译器(上)
- 某leader求助:周六晚上拉下属开会,被下属怀孕的老婆公然大骂,怎么办?网友:活该!...
- Windows系统安装zabbix-agent客户端
- java 使用http2.0_【Java】okhttp3如何发送http2请求?
- Android魔法(第二弹)——一步步实现淹没、展开效果
- Python中类方法、类实例方法、静态方法,私有属性和私有方法有何区别?
- python电脑推荐_6款Python必备的可视化工具推荐
- Javascript 函数详解
- 图片测量尺寸软件_3D扫描之工件测量检测
- mysql查询自定义数据_实现自定义查询的数据库设计及实现(一)
- ubuntu16.04安装pycharm
- Objective-c官方文档 怎么自定义类
- 荣耀x10max能不能升级为鸿蒙,荣耀X10 Max即将亮相:容量很“放肆” 身材却很“克制”...
- 「日常训练」Queue(Codeforces Round 303 Div.2 D)
- 乘着创新的浪潮:协同运输机器人编队的基于模型的开发实施方案
- 超实用的pr视频制作视频过渡小技巧
- c语言思维导图(学习笔记)
- Apache主机如何强制HTTP重定向到HTTPS WorldPress
- Uncaught Error: A <Route> is only ever to be used as the child of <Routes> element, never rendered d
- Github上一个优秀的Python学习资源:AwesomePythonResource
热门文章
- iphone safari不支持position fixed的解决办法
- 今天开通android博客 该认真学习了
- javascript 继承、子类化
- CCF201509-5 最佳文章【AC自动机】(100分解题链接)
- HDU4841 圆桌问题【约瑟夫环+模拟+STL】
- NUC1776 Tiling Up Blocks【二维最长上升子序列+DP】
- POJ NOI MATH-7829 神奇序列求和
- 组态档(configuration file)与建构档
- matplotlib 可视化 —— matplotlib.patches
- C++设计模式——Composite 组合模式