有一个关于$nextTick的问题请教下。
// 为啥$nextTick放在$emit上面就拿不到value更新?
this.$nextTick(() => {
this.value; // 没更新(value是用v-model传递的props)
})
this.$emit('input', 123);
如果把$nextTick放在$emit下面就可以
this.$emit('input', 123);
this.$nextTick(() => {
this.value; // 更新了
})
$nextTick是异步触发的,它等待数据刷新难道不包括$emit这种嘛,或者说$emit比$nextTick更慢呢?如果更慢的话放在下面一行为啥就能拿到更新了呢?
this.$emit('input',123)后,input时间的监听函数会被同步执行,但是其中对data的修改会放到一个异步队列中,nextTick也是将一个函数放入异步队列中,而你的前一种写法,读取value的函数,在对data的更新先入队,所以获取不到更新后的值,而第二种在后入队的话就能读到

参考地址https://cn.vuejs.org/v2/guide...