vue中有一個(gè)dom操作的函數(shù),叫做$nextTick,可以用來異步更新dom。
但是有時(shí)候我們需要延遲更長時(shí)間后再更新dom,這時(shí)可以使用JavaScript原生的setTimeout函數(shù)。
setTimeout(() =>{
// 定時(shí)器回調(diào)函數(shù)中更新dom
this.$refs.element.innerHTML = '新內(nèi)容'
}, 1000)
在setTimeout的回調(diào)函數(shù)中,可以像平常一樣更新dom,比如更改元素的innerHTML或style屬性等。
需要注意的是,當(dāng)使用setTimeout更新dom時(shí),需要手動(dòng)銷毀定時(shí)器,否則會導(dǎo)致內(nèi)存泄漏。可以將定時(shí)器的返回值存儲在一個(gè)變量中,在組件銷毀時(shí)執(zhí)行clearTimeout函數(shù)。
mounted() {
this.timer = setTimeout(() =>{
this.$refs.element.innerHTML = '新內(nèi)容'
this.clearTimer()
}, 1000)
},
methods: {
clearTimer() {
clearTimeout(this.timer)
}
},
beforeDestroy() {
this.clearTimer()
}
這樣就可以安全地使用setTimeout來延遲更新dom了。