Vue 异步执行 DOM 更新。只要观察到数据变化,Vue 将开启一个队列,改变缓冲在同一事件循环中发生的所有数据。如果同一个 watcher 被多次触发,只会一次推入到队列中。这个思想类似于 react, 用来减少 重绘性能消耗,譬如 :
<div v-if="data">
<com ref="com"></com>
</div>
data 最初为null,那么当我们在一个method 中调用
this.data ={};
console.log(this.$refs.com)
时因为 vue 异步更新dom 的关系,data 并没有马上生效到dom 的渲染上,com 组件未完成渲染,所以 this.$refs.com 会为 undefined,此时需要使用 this.$nextTick 解决问题