Vue中this.$forceUpdate()與this.$nextTick()
this.$nextTick 將回調(diào)延遲到下次DOM更新循環(huán)之后執(zhí)行。在修改數(shù)據(jù)之后立即使用它,然后等待DOM更新。
在Vue生命周期的created()鉤子函數(shù)進行的DOM操作一定要放在Vue.nextTick()的回調(diào)函數(shù)中。
原因是在created()鉤子函數(shù)執(zhí)行的時候DOM 其實并未進行任何渲染,此時進行DOM操作無異于徒勞,而與之對應(yīng)的就是mounted鉤子函數(shù),因為該鉤子函數(shù)執(zhí)行時所有的DOM掛載已完成。
this.$nextTick(function(){
? ? console.log("回調(diào)函數(shù)")
})
如果對于一個復(fù)雜的對象,例如一個對象數(shù)組,你直接去給數(shù)組上某一個元素增加屬性,或者直接把數(shù)組的length變成0,vue就無法知道發(fā)生了改變。this.$forceUpdate()與this.$set()可以解決
change:function(index){
? ? this.$set(this.list[index],"sex","男")
}
clear:function(){
? ? this.list[]
}
change:function(index){
? ? this.list[index].sex="男";
? ? this.$forceUpdate();
}
clear:function(){
? ? this.list.length=0;
? ? this.$forceUpdate()
}
標簽: