$nextTick原理:

首先说一下$nextTick的作用,$nextTick主要是用于等待dom更新完后执行一些回调操作。然后说一下为什么要使用$nextTick,由于vue更新dom是异步执行的,即修改数据时,不会立马更新视图,而是会监听数据变化,并缓存在同一个事件循环中,等同一个事件循环中的数据变化完成之后,再统一进行视图更新,为了获取到更新后的dom,所以需要使用$nextTick。再说一下$nextTick原理,其实主要关心的就是$nextTick怎样拿到更新后的dom,当那些异步任务被缓冲后,$nextTick会尝试使用promise.then、mutationObserver和setImmediate去挨个执行缓冲区的任务,如果都不支持,则使用setTimeout,同一个事件循环中的任务全部执行完以后,vue就会统一进行视图更新,这个时候就拿到了更新后的dom
展开
评论