常見缺陷從 ready() 鉤子訪問 DOM

ready() 鉤子的常見用例是訪問 DOM,例如啟動 Javascript 外掛,獲取元素的尺寸等。

問題

由於 Vue 的非同步 DOM 更新機制,當呼叫 ready() 鉤子時,無法保證 DOM 已完全更新。這通常會導致錯誤,因為元素未定義。

解決方案

對於這種情況, $nextTick() 例項方法可以提供幫助。此方法將提供的回撥函式的執行推遲到下一個 tick 之後,這意味著當所有 DOM 更新都保證完成時會觸發它。

例:

module.exports {
  ready: function () {
    $('.cool-input').initiateCoolPlugin() //fails, because element is not in DOM yet.
    
    this.$nextTick(function() {
      $('.cool-input').initiateCoolPlugin() // this will work because it will be executed after the DOM update.
    })
  }
}