常见缺陷从 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.
    })
  }
}