$nextTick用法與理解

1. 在Vue生命周期的created()鉤子函數進行的DOM操作一定要放在Vue.nextTick()的回調函數中

在 Vue生命周期函數中 created鉤子函數中: DOM 并沒有進行任何渲染, 而此時進行DOM 操作無異于是徒勞的, 所以此處一定將DOM 操作的js 代碼放進Vue.nextTick 回調函數中, 與之對應的就是mounted()

鉤子函數, 因為該鉤子函數執(zhí)行時所有的DOM 掛載和渲染都已經完成, 此時在該鉤子函數中進行任何操作都不會有問題。

2. 在數據變化后要執(zhí)行某個回調函數,而這個操作需要使用隨數據改變而改變的DOM結構的時候, 這個操作都應該放進Vue.nextTick () 回調函數中。

3: Vue的官方文檔中詳細解釋:

vue 執(zhí)行dom 更新是異步的, 只要是觀察到數據變化, vue? 將會開啟一個隊列, 并緩沖在同一事件循環(huán)中發(fā)生的所有數據改變。 如果同一個watcher 被多次觸發(fā),只會被推如到隊列中一次。 在這種緩沖時去除重復數據對于避免不必要的計算, 和DOM 操作非常重要。 然后下一個事件循環(huán) “tick”中, vue 刷新隊列執(zhí)行實際(去重)工作。 在Vue 內部嘗試對異步隊列使用原生的promise.then 和 MessageChange, 如果執(zhí)行環(huán)境不支持, 會采用setTime(()=> {} , 0)代替。

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容