nexttick(简单理解Vue.nextTick(callback))
本文目录
简单理解Vue.nextTick(callback)
可能你还没有注意到,Vue 在更新 DOM 时是异步执行的。只要侦听到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发,只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作是非常重要的。然后,在下一个的事件循环“tick”中,Vue 刷新队列并执行实际 (已去重的) 工作。Vue 在内部对异步队列尝试使用原生的 Promise.then、MutationObserver 和 setImmediate,如果执行环境不支持,则会采用 setTimeout(fn, 0) 代替。
例如,当你设置 vm.someData = ’new value’,该组件不会立即重新渲染。当刷新队列时,组件会在下一个事件循环“tick”中更新。多数情况我们不需要关心这个过程,但是如果你想基于更新后的 DOM 状态来做点什么,这就可能会有些棘手。虽然 Vue.js 通常鼓励开发人员使用“数据驱动”的方式思考,避免直接接触 DOM,但是有时我们必须要这么做。为了在数据变化之后等待 Vue 完成更新 DOM,可以在数据变化之后立即使用 Vue.nextTick(callback)。这样回调函数将在 DOM 更新完成后被调用。例如:
报错 TypeError: this.$refs.myWidth is undefined,因为每个组件实例都对应一个 watcher 实例,如果同一个 watcher 被多次触发,只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作是非常重要的。然后,在下一个的事件循环“tick”中,Vue 刷新队列并执行实际 (已去重的) 工作。Vue 在内部对异步队列尝试使用原生的 Promise.then、MutationObserver 和 setImmediate。异步更新的原因,所以此时没有p元素,所以拿不到p元素的属性。 ··· 该组件不会立即重新渲染。当刷新队列时,组件会在下一个事件循环“tick”中更新。多数情况我们不需要关心这个过程,但是如果你想基于更新后的 DOM 状态来做点什么,这就可能会有些棘手。虽然 Vue.js 通常鼓励开发人员使用“数据驱动”的方式思考,避免直接接触 DOM,但是有时我们必须要这么做。为了在数据变化之后等待 Vue 完成更新 DOM
nexttick原理是什么
nexttick原理实现响应式并不是数据发生变化之后DOM立即变化,而是按一定的策略进行DOM的更新。
同步任务执行完毕,开始执行异步watcher队列的任务,更新DOM。Vue在内部尝试对异步队列使用原生的Promise。then和MessageChannel方法,如果执行环境不支持,会采用setTimeout(fn,0)代替。
扩展资料:
vue在web开发、网站制作中的优势
1、据绑定:vue会根据对应的元素,进行设置元素数据,通过输入框,以及get获取数据等多种方式进行数据的实时绑定,进行网页及应用的数据渲染 。
2、组件式开发:通过vue的模块封装,它可以将一个web开发中设计的各种模块进行拆分,变成单独的组件,然后通过数据绑定,调用对应模版组件,同时传入参数,即可完成对整个项目的开发。
3、简单小巧的核心,渐进式技术栈,足以应付任何规模的应用。
Vue中的nextTick
1、nextTick是Vue提供的一个全局API,由于Vue的异步更新策略导致我们对数据的修改不会立刻体现,在DOM变化上,此时如果想要立即获取更新后的DOM状态,就需要使用这个方法。 2、Vue在更新DOM时是异步执行的。只要监听到数据变化,Vue将开启一个队列,并缓冲在同一事件循环中发生的所有数据变更。如果同一个watcher被多次触发,只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和DOM操作是非常重要的。nextTick方法会在队列中加入一个回调函数,确保该函数在前面的DOM操作完成后才调用。 3、所以当我们想在修改数据后立即看到DOM执行结果就需要用到nextTick方法。 4、比如,在干什么的时候就会使用nextTick,传一个回调函数进去,在里面执行DOM操作即可。 5、 简单了解nextTick实现,它会在callbacks里面加入我们传入的函数,然后用timerFunc异步方式调用它们,首选的异步方式会是Promise。这让我明白为什么可以在nextTick中看到DOM操作的结果。
更多文章:
笔记本一直玩大型游戏会废吗(经常拿笔记本玩大型游戏会不会影响寿命)
2024年7月15日 16:26
戴尔g5外星人控制中心打不开(戴尔g3 3590的外星人控制中心在哪找,我找不到这个东西)
2024年9月29日 03:20
惠普无线网卡驱动官网(惠普pavilion g6-1100ax无线网卡驱动下载找不到)
2024年6月1日 08:05
联想都有哪些商务本在最近国庆是有促销的?联想电脑哪款商务本促销力度大
2024年10月3日 11:15
神舟十二号图片(神舟十二号航天员回家了,飞船返回舱怎么安全着陆)
2024年7月21日 10:08
华硕笔记本a40j装系统多少位(华硕A40JY笔记本,系统win7 32位旗舰版官网驱动该怎样选择安装)
2024年6月5日 04:44
联想官方网站驱动下载 t440s(求一个蓝牙驱动的下载地址,谢谢了,我的是T440s)
2024年5月17日 22:55
nvidia驱动卸载不干净(NVIDIA显卡驱动删不掉怎么办)
2024年7月18日 01:09
两千左右平板电脑好用又经济(平板电脑推荐在哪看2000左右求推荐)
2024年9月5日 02:10