范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Vue应用关于nextTick

  闲时要有吃紧的心思,忙时要有悠闲的趣味  一、什么是 Vue.nextTick()
    关于 nextTick,其实官网上面讲的蛮明白的,详情请看:
  Vue.nextTick( [callback, context] )
  语法
  Vue.nextTick([callback, context])
  参数{Function} [callback]:回调函数,不传时提供promise调用{Object} [context]:回调函数执行的上下文环境,不传默认是自动绑定到调用它的实例上。
  用法
    在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。
    简单的理解是:当数据更新了,在 DOM 中渲染后,自动执行该函数。
  举个栗子:   复制代码
    点击按钮,打印出来的结果为:直接获取: 未更新 啥也不干,就是玩。 nextTick回调: 最后更新 nextTick作为Promise: 最后更新 复制代码
    从以上例子可以发现:我们多次更改了testMsg的值,但最终只能拿到this.testMsg = "最后更新";在更改之后直接获取DOM数据的时候,因为此时DOM还没有更新,所以只能拿到更新前的DOM数据未更新无论是在nextTick回调函数还是then函数中的方法,都会在当前方法内所有同步代码执行完毕之后再执行,然后就能拿到更新后的DOM数据了
    这是什么原因呢?二、原理
  JS运行机制(Event Loop)
  JS事件循环(Event Loop)
  JS执行是单线程的,它是基于事件循环的。所有同步任务都在主线程上执行,形成一个执行栈。主线程之外,会存在一个任务队列,只要异步任务有了结果,就在任务队列中放置一个事件。当执行栈中的所有同步任务执行完后,就会读取任务队列。那些对应的异步任务,会结束等待状态,进入执行栈。主线程不断重复第三步。
    这里主线程的执行过程就是一个tick,而所有的异步结果都是通过任务队列来调度。Event Loop 分为宏任务和微任务,无论是执行宏任务还是微任务,完成后都会进入到一下tick,并在两个tick之间进行UI渲染。
  Vue更新策略
    同样,Vue 是异步执行 DOM 更新的。更新过程如下:一旦观察到数据变化,Vue 就会开启一个队列,然后把在同一个事件循环 (event loop) 当中观察到数据变化的 watcher 推送进这个队列。如果这个 watcher 被触发多次,只会被推送到队列一次。这种缓冲行为可以有效的去掉重复数据造成的不必要的计算和 DOM 操作。而在下一个事件循环时,Vue 会清空队列,并进行必要的 DOM 更新。
    所以,当你设置 this.testMsg = "再次更新"; 时,DOM 并不会马上更新,即使你用一个for循环来动态改变数据100次,其实它只会应用最后一次改变。而在异步队列被清空后,也就是下一个事件循环开始时执行更新时才会进行必要的 DOM 更新。
    因此,为了确保得到更新后的DOM,所以设置了 Vue.nextTick() ; 可以在数据变化之后立即使用 Vue.nextTick(callback) ,这样回调函数 callback 在 DOM 更新完成后就会调用。三、Vue.nextTick() 应用场景
    需要在视图更新之后,基于新的视图进行操作。
  1. 初始化绑定或操作DOM
    在 created()钩子函数执行的时候 DOM 其实并未进行任何渲染,同样mounted() 不会承诺所有的子组件也都一起被挂载。而此时进行 DOM 操作无异于徒劳,所以如果你希望等到整个视图都渲染完毕, 一定要将 DOM 操作的 js 代码放进 Vue.nextTick() 的回调函数中。created() {     // 不使用this.$nextTick()方法会报错     that.$nextTick(() => {         that.$refs.firstBtn.innerHTML = "created 中更改了按钮内容"; //写入到 DOM 元素     }); } 复制代码
  2. 获取数据更新的DOM
    当项目中你想在改变 DOM 元素的数据后基于新的 DOM 做点什么,比如获取v-if控制的DOM节点。必须放进 Vue.nextTick() 的回调函数中.     

{{ message }} getMyWidth() { this.showMe = true; //this.message = this.$refs.myWidth.offsetWidth; //报错 TypeError: this.$refs.myWidth is undefined this.$nextTick(()=>{ //dom元素更新后执行,此时能拿到p元素的属性 this.message = this.$refs.myWidth.offsetWidth; }) } 复制代码   3.第三方插件中使用     在使用某个第三方插件时 ,希望在 vue 生成的某些 DOM 动态发生变化时重新应用该插件,也会用到该方法,这时候就需要在 $nextTick 的回调函数中执行重新应用插件的方法。比如使用 swiper 插件通过 ajax 请求图片后的滑动问题。     路漫漫其修远兮,与诸君共勉。


浅谈测试分层模型及思想测试结构的分层说起测试结构,为了更好地发现问题验证需求,我们将测试按照结构分为这些层次端到端测试(UI测试),接口测试(serviceapi测试),单元测试(Unittest),针一本狄氏族谱就自称狄仁杰第72世孙?太草率了家谱傍同姓氏名人的事情,并不稀奇。早前,江苏徐州一位狄姓村民,自称自己是狄仁杰的后代,并有狄氏家谱作为证据。此人难不成真是神探狄仁杰的后人吗?这个消息瞬间引发了不少网友的关注。狄氏寻根问祖,续修家谱,是家族的灵魂和精神支柱家谱是中华民族的文化一部分,一种文化自信,一种优秀传统文化孝道文化的传承,更是一种家庭家教家风建设的重要体现。树有千丈有根底,河有万里有源头。人是有头有脸人,自己的根在哪里,就需要孩子太有成就却远走美国,老人后悔教育太成功同小区的蔡阿姨,一儿一女,好事成双,事业有成,50岁前好不令人羡慕。令人羡慕的蔡阿姨蔡阿姨今年72岁,大儿子今年48岁,女儿今年42岁,50岁之前的蔡阿姨一直是邻居羡慕的对象。儿子成都小学界的扛把子成都市泡桐树小学规模宏大的泡小8000多名在校生,166个教学班,这是一个庞大的小学校吗?妥妥的一所大学啊。学校拥有6个小区,泡小本部西区校区境界校区绿舟校区浦江校区都江堰校区。泡小历史悠久的泡小德国在国内最火的蓝牙音箱评测时尚不足性能爆棚德国人素以严谨著称,在有些时候甚至可以用古板守旧来形容,大部分德国人做事情都是严格做到一丝不苟,在细节上也苛求完美,也正是他们对工作的这种态度,造就了今天德国制造业在全世界范围内成艳惊全场的小布丁,HyperX阿洛伊精英版2机械键盘分享越来越多的外设老玩家开始吐槽新批次的Cherry轴体,手感退步表现拉胯让很多烧友都有点怒其不争的愤慨。我们熟知的一些外设大厂都开始推出自主轴,比如罗技的RomerGGL轴赛睿的Om刷新认知的国产非打孔超轻电竞鼠标,不足65克的暴风随着2019年第一款洞洞鼠的问世,轻量级鼠标就一下放飞了自我,各个品牌都在争相推出自家的轻量级鼠标。最简单粗暴的减重方法当然是直接在现有模具上打洞,市面上过半数减重鼠标基本都属于这同样是入门款机械键盘,微星和罗技各侧重了什么?先简单聊一下我对这两个品牌的印象和看法,纯主观评价,欢迎讨论交流先说罗技,我觉得罗技技术肯定是有的,深耕外设行业多年,地位一直都未曾动摇过。但罗技总是不好好做键盘,前几年很个性的不83键新配列,2。4G无线双模,高斯ALT83G机械键盘有很多人都想过打造一个全无线整洁桌面,如果只是办公和轻度休闲游戏的话,大部分蓝牙外设都可以满足需求。而一旦需要玩一些竞技类游戏的话,蓝牙的高延迟和不稳定弊端绝对会让你想砸掉手上的设iPadAir2深度评测,A8XM82014年10月17日苹果发布了新一代iPadAir,iPadAir2(以下简称Air2)。Air2相比Air提升如下。增加TouchID取消静音按键处理器更新为A8XM8电池缩水
格林美报废动力电池里寻金的破烂王2020年,中国新能源车卖了136万辆,和整个欧洲基本平起平坐。其中,销量最大的两个品牌,一个是著名的特斯拉,另一个是人民的五菱。和2500万辆汽车总销量相比,新能源车的占比已经超Android新版本,全新界面设计,实用功能都有哪些?在的GoogleIO大会上,Google公布了很多关于Android12的特点,其中较为吸引人的就是全新的MaterialYou设计语言。国内众多厂商也开始布局,发布了Androi强悍性能加持!iQOONeo5活力版成618购机首选近期有多个手机厂商发布了旗下的新款产品,其中iQOONeo5活力版在上线后得到了大量年轻网友的喜爱。它采用了诸多旗舰级的硬件配置,具备强悍的性能以及出色的影音表现。不仅如此,这款手国产机拼命吆喝,没赚几个钱,iPhone12以12出货量,拿下34收入过去的一年多以来,几乎所有的厂商都在冲击高端,因为华为手机的下滑,给了国产厂商们千载难逢的机会。所以我们看到,小米OV们纷纷走向了高端之路,价格纷纷上涨,因为冲击高端,除了能多赚钱上海新能源销量暴增,但插混却意外翻车去年10月底,上海发布交通管理部门发布新规自2020年11月2日开始,上海内环高架上外牌限行时间加长2021年五一假期之后,内环地面道路也将对外牌限时开放。于是,在新政发布后的半年新开普牵手联通支付,将加快数字人民币业务布局大河财立方消息据新开普公众号发布,近日,新开普与联通支付有限公司(以下简称联通支付)签订战略协议,在国密产品数字人民币产品和解决方案5GSIM卡移动安全业务等领域建立战略合作关系,天猫618今晚开买88VIP用户买手机都是全网最低价今晚0点,天猫618正式开买!剁手党们今天只用做三件事去淘宝领消费券添加购物车付尾款。据了解,今年618期间,天猫将给消费者发放60亿消费券,今天开始全天可以领,金额在5元30元之少儿编程到底有多重要!看看科技大佬和他们的孩子都在学就知道了长久以来,有许多家长对于儿童的编程教育,会有一个常见的误区,认为学习编程就是让孩子写代码,是培养年轻的程序员。其实不然,下面我们先来看看各领域的大佬们是如何看待编程的吧。人工智能的6月起平台将限制未成年人上网消费打赏中华人民共和国未成年人保护法修订案经十三届全国人大常委会第22次会议表决通过,将于今年6月1日正式施行。新修订的未成年人保护法增设了网络保护专章,从立法角度为未成年人提供网络保护。降低价格对华出售光刻机!媒体对国内而言是好消息也是坏消息在过去两年多时间里,国内半导体领域都在承受着巨大压力。伴随着华为事件不断发酵,国内在半导体领域问题越加明显,虽然国内的华为中芯国际等有能力研发芯片,但不得不承认的是,在芯片制造方面助力五一出行腾讯地图北斗打造极致精准导航体验伴随北斗全球卫星导航系统星座部署全面完成,腾讯地图全方位支持使用北斗卫星系统进行导航,腾讯地图北斗系统将为用户打造更加优质的精准导航体验。依托北斗卫星全球组网,腾讯地图将充分发挥自