nextTick介绍
1、背景
- Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。
2、作用
- $nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM
3、例子
//html<div class="app"><div ref="msgDiv">{{msg}}</div><div v-if="msg1">Message got outside $nextTick: {{msg1}}</div><div v-if="msg2">Message got inside $nextTick: {{msg2}}</div><div v-if="msg3">Message got outside $nextTick: {{msg3}}</div><button @click="changeMsg">Change the Message</button></div>//vue-jsexport default {name: "test",data() {return {msg: "Hello Vue.",msg1: "",msg2: "",msg3: ""};},methods: {changeMsg() {this.msg = "Hello world.";this.msg1 = this.$refs.msgDiv.innerHTML;console.log("msg1="+this.msg1)this.$nextTick(() => {this.msg2 = this.$refs.msgDiv.innerHTML;console.log("msg2="+this.msg2)});this.msg3 = this.$refs.msgDiv.innerHTML;console.log("msg3="+this.msg3)}}};//打印结果msg1=Hello Vue. //数据进行变化之后没有立即执行DOM操作msg3=Hello Vue. //因为msg2在延迟函数里,所以先打印msg3msg2=Hello world. //changeMsg()执行完毕之后调用$nextTick函数,此时DOM已经更新
4、应用场景:
- 在vue生命周期的created()钩子函数进行的DOM操作一定要放在vue.nextTick()的回调函数中
5、原因:
- 在created()的钩子函数执行的时候DOM其实并未进行任何渲染,而此时进行DOM操作无异于徒劳,所以此处一定要将DOM操作的js代码放进vue.nextTick()的回调函数中。
- 与之对应的是mounted()钩子函数,因为该钩子函数执行时所有的DOM挂载和渲染都已经完成,此时在该钩子函数中进行任何DOM操作都不会有问题。
感谢博主启发 https://www.jianshu.com/p/a7550c0e164f
nextTick介绍相关推荐
- vue在微信里面的兼容问题_Vue在 iOS 微信浏览器下不能播放
问题的本质 以上定位到问题大概花了我半小时时间,但是我并没有找到问题的根本原因,于是我翻阅了 Vue.js 2.5 的 release log,由于很长就不列了.Vue.js 每次升级主要分成 2 大 ...
- vue在初始化时给scrollTop设置一个值,但scrollTop却始终为0
在vue项目中往往有这样一个需求,在初始化时需要给某个容器的scrollTop设置一个值,一开始的想法是在created或者mounted中改变 scrollTop 的值,但是却出现了几个问题. 问题 ...
- Linux事件循环阻塞,深入浅析Node.js 事件循环、定时器和process.nextTick()
什么是事件循环 尽管JavaScript是单线程的,但通过尽可能将操作放到系统内核执行,事件循环允许Node.js执行非阻塞I/O操作. 由于现代大多数内核都是多线程的,因此它们可以处理在后台执行的多 ...
- CSS清除默认样式,技术详细介绍
前言 JavaScript是面向 Web 的编程语言,获得了所有网页浏览器的支持,是目前使用最广泛的脚本编程语言之一,也是网页设计和 Web 应用必须掌握的基本工具. JavaScript主要用途 嵌 ...
- “约见”面试官系列之常见面试题第三十九篇之异步更新队列-$nextTick(建议收藏)
目录 一,前言 二,什么是异步更新队列 三,使用异步更新队列 四,结尾 一,前言 这一篇介绍有关异步更新队列的知识,通过异步更新队列的学习和研究能够更好的理解Vue的更新机制 二,什么是异步更新队列 ...
- 批量异步更新策略及 nextTick 原理
批量异步更新策略及 nextTick 原理 为什么要异步更新 通过前面几个章节我们介绍,相信大家已经明白了 Vue.js 是如何在我们修改 data 中的数据后修改视图了.简单回顾一下,这里面其实就是 ...
- GitHub开源项目 - Jeecg-Boot开始开发平台介绍
GitHub开源项目 - Jeecg-Boot开始开发平台介绍 Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台!采用前后端分离架构:SpringBoot,Mybatis ...
- vue 多个回调_Vue 进阶面试必问,异步更新机制和 nextTick 原理
vue已是目前国内前端web端三分天下之一,同时也作为本人主要技术栈之一,在日常使用中知其然也好奇着所以然,另外最近的社区涌现了一大票vue源码阅读类的文章,在下借这个机会从大家的文章和讨论中汲取了一 ...
- nexttick使用场景_使用Jest实现Vue自动化测试
前言 在开始前,我们先来聊一下什么是自动化测试.通常,在需求确定以后,测试会编写测试用例,然后,根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较.在此过程中,为了节省人力.时间或硬 ...
最新文章
- c文本框只能输入数字_VBA代码限制文本框的输入
- Spring Boot第五篇:springboot整合 beatlsql
- c语言在车辆工程专业中的用途,车辆工程专业培养目标与毕业要求(11页)-原创力文档...
- java 过滤掉相同请求_java并发访问重复请求过滤问题
- asp连接mysql字符串_asp连接数据库字符串
- winform中treeview控件实现部分节点显示checkbox
- oracle仲裁磁盘是一块磁盘吗,基于ASM冗余设计的架构,仲裁磁盘组应该如何去规划?...
- Android开发学习——画横线竖线
- 最全“Java面试宝典+Java核心知识集”
- 斐讯K2刷华硕固件+全套工具
- ChineseWiki︱百万中文维基百科词条下载与整理
- EXCEL:获取某列或得中最后一个非空单元格的行数和数值
- 用Nodejs爬取Matrix67的博客
- 计算机怎么开机操作,电脑怎么设置键盘开机?
- 海信html501n手机,专为中老年人设计的智能手机,海信T50确实不简单
- 神经网络按结构可以分为,神经网络主要包括哪些
- 微型计算机断电后信息将会丢失,2018年职称计算机考试题库(20)
- php表格怎么移动,excel如何移动或复制列
- 视频里面的水印怎么添加
- Matlab项目实例-用电量
热门文章
- 自动控制原理-频率特性 G(jw ) 定义
- 目标检测——day66 Scaled-YOLOv4: Scaling Cross Stage Partial Network
- 浅谈AI设计:理解玩家们对游戏的感知方式
- SQL——DDBC手册
- 乌鸦安全2021年度文章合集
- 利用jsdelivr+github使用免费又好用的全球节点CDN
- 人、狼、羊、白菜过河问题(广度搜索)
- 8:操作模式1-boot mode
- Java集合(十一)TreeSet解读
- python连接数据库生成可视化_python3.6 连接数据库并用matplotlib可视化代码