$nextTick用法:將回調延遲到下次 DOM 更新循環之後執行。在修改數據之後立即使用它,然後等待 DOM 更新。
updated用法:由於數據更改導致的虛擬 DOM 重新渲染和打補丁,在這之後會調用該鉤子。當這個鉤子被調用時,組件 DOM 已經更新,所以妳現在可以執行依賴於 DOM 的操作。
this.$nextTick()可以用作局部的數據更新後DOM更新結束後的操作,全局的可以用updated生命周期函數
可能妳還沒有註意到,Vue 在更新 DOM 時是異步執行的。只要偵聽到數據變化,Vue 將開啟壹個隊列,並緩沖在同壹事件循環中發生的所有數據變更。
(也就是說數據變化後,DOM不會馬上更新,根據數據更新DOM的事件被放入異步隊列中了)
如果同壹個 watcher 被多次觸發,只會被推入到隊列中壹次。這種在緩沖時去除重復數據對於避免不必要的計算和 DOM 操作是非常重要的。然後,在下壹個的事件循環“tick”中,Vue 刷新隊列並執行實際 (已去重的) 工作。
例如,當妳設置 vm.someData = 'new value' ,該組件不會立即重新渲染。當刷新隊列時,組件會在下壹個事件循環“tick”中更新。多數情況我們不需要關心這個過程,但是如果妳想基於更新後的 DOM 狀態來做點什麽,這就可能會有些棘手。雖然 Vue.js 通常鼓勵開發人員使用“數據驅動”的方式思考,避免直接接觸 DOM,但是有時我們必須要這麽做。為了在數據變化之後等待 Vue 完成更新 DOM,可以在數據變化之後立即使用 Vue.nextTick(callback)。這樣回調函數將在 DOM 更新完成後被調用。
(在這個更新DOM的隊列結束後,就會調用nextTick,從而執行裏面的callback)
例如: