【发布时间】:2025-11-27 14:10:02
【问题描述】:
在我看来,流程应该是:DataChange --> DOM-Rerender --> 传给$nextTick的回调函数执行。对吗?但是在下面的简单示例中,我无法弄清楚
<div id='app'>
{{msg}}
</div>
let app = new Vue({
el:'#app',
data:{
msg:'message'
},
mounted(){
this.$nextTick(()=>{
this.message = 'NEW MESSAGE'
})
}
})
我不知道为什么函数执行(消息变成'NEW MESSAGE'),'因为我没有改变任何数据,我想我必须改变像'this.someDataProperty = foo ' 所以传递给 $nextTick 的回调可以执行?
我阅读了有关 vm.$nextTick 的文档,它说传递给 nextTick 函数的回调将在下一次 DOM 更新后执行。但是 下一次 DOM 更新是什么? 是关于时间还是浏览器重绘?如果数据更改可能随时发生,那么下一个 DOM 更新是什么?像这样:
//...
mounted(){
this.msg = 'foo'
axios.get('//bar.com').then(response=>{
this.msg = response.msg
})
axios.get('//baz.com').then(response=>{
this.msg = response.msg
})
this.$nextTick(function(){
console.log(document.querySelector('#app').innerHTML)
})
}
谁能告诉我何时下一次 DOM 更新的确切时间?
【问题讨论】:
标签: javascript web vue.js event-loop