vue的nextTick原理
要理解nextTick的原理,可能先要理解vue时怎么更新视图的,因为nextTick的回调函数要等到视图更新后才会执行。
vue视图更新采用的时候异步的方式进行更新的,每次侦听到数据变化,vue都会开启一个异步队列,往队列里面塞watcher的回调函数。
所以nextTick的本质也是一个异步任务,所以vue视图更新和nextTick的本质上就是js的事件循环。
- 比如this.msg = 'hi',vue监听到msg变化,然后把msg对应的watcher回调函数函数推入异步队列,
- vue遇到this.$nextTick调用时,也把nextTick的回调函数变成一个异步任务
- 等watcher回调函数里执行div.innerHtml = 'hi' 之后,就去执行nextTick的回调