vue异步渲染

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue异步渲染相关的知识,希望对你有一定的参考价值。

参考技术A vue是组件级更新,当数据更改一次组件就要重新渲染一次,性能不高,为了防止数据一更新就更新组件,所以做了个异步更新渲染。(核心的方法就是nextTick)

分析:
当数据变化后会调用notify方法,将watcher遍历,调用update方法通知watcher进行更新,这时候watcher并不会立即去执行,在update中会调用queueWatcher方法将watcher放到了一个队列里,在queueWatcher会根据watcher的进行去重,多个属性依赖一个watcher,如果队列中没有该watcher就会将该watcher添加到队列中,然后通过nextTick异步执行flushSchedulerQueue方法刷新watcher队列。flushSchedulerQueue中开始会触发一个before的方法,其实就是beforeUpdate,然后watcher.run() 才开始真正执行watcher,执行完页面渲染完成,更新完成后调用updated。

为何vue采用异步渲染

理解:

如果不采取异步更新,那么每次更新数据都会对当前组件进行重新渲染,为了性能考虑,Vue 会在本轮数据更新后,再去异步更新数据。

原理:

dep.notify() 通知 watcher 进行更新操作
-->subs[i].update() 依次调用 watcher 的 update
-->queueWatcher 将 watcher 重新放到队列中
-->nextTick(flushSchedulerQueue) 异步清空 watcher 队列

以上是关于vue异步渲染的主要内容,如果未能解决你的问题,请参考以下文章

vue异步渲染

vue异步数据不能循环能打印

Vue解决vue-resources异步请求问题

解决vue开发时子组件数据和组件渲染的异步问题

vue-router:无法解析异步组件渲染

Vue3 渲染一个可扩展的异步组件列表