Javascript Vue:何时执行传递给vm的函数。$nextTick?
在我看来,这个过程应该是:DataChange-->DOM Rerender-->传递给$nextTick execute的回调函数。对吗?但在下面这个简单的例子中,我无法理解Javascript Vue:何时执行传递给vm的函数。$nextTick?,javascript,web,vue.js,event-loop,Javascript,Web,Vue.js,Event Loop,在我看来,这个过程应该是:DataChange-->DOM Rerender-->传递给$nextTick execute的回调函数。对吗?但在下面这个简单的例子中,我无法理解 <div id='app'> {{msg}} </div> let app = new Vue({ el:'#app', data:{ msg:'message' }, mounted(){ this.$nextTick(()=>{ th
<div id='app'>
{{msg}}
</div>
let app = new Vue({
el:'#app',
data:{
msg:'message'
},
mounted(){
this.$nextTick(()=>{
this.message = 'NEW MESSAGE'
})
}
})
有人能告诉我下一次DOM更新的确切时间吗?您对
的理解。$nextTick
有点不正确。当您将回调传递给$nextTick
时,Vue将在执行回调之前等待DOM更新(由于任何未完成的数据更改)。但是,如果没有未完成的数据更改,也没有DOM更新,则会立即调用回调。诚然,对于这种行为,我们并不清楚,但您可以从中看到逻辑
似乎您希望在DOM更新时更改一个值。为此,您可以使用更新的
生命周期挂钩
下面是一个示例,其中更改输入字段的绑定值将更新DOM,从而导致updated
钩子触发,更新this.msg
的值:
newvue({
el:“#应用程序”,
数据(){
返回{
味精:“foo”,
值:“文本”
}
},
更新的(){
this.msg='bar';
}
})
{{msg}}
@Archsx我不正确。另外,只有在数据更改或调用时才会触发重新加载程序。查看我的最新答案
//...
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)
})
}