1. 程式人生 > >記vue nextTick用到的地方

記vue nextTick用到的地方

結束 cab 周期 shu tps 全局函數 dial 圖表 fun

nextTick是vue提供的全局函數,在下次 DOM 更新循環結束之後執行延遲回調。在修改數據之後立即使用這個方法,獲取更新後的 DOM。

// 修改數據
vm.msg = 'Hello'
// DOM 還沒有更新
Vue.nextTick(function () {
  // DOM 更新了
})

// 作為一個 Promise 使用 (2.1.0 起新增,詳見接下來的提示)
Vue.nextTick()
  .then(function () {
    // DOM 更新了
  })

在實際的vue+element項目中與echart,antv G6等圖形庫結合使用的時候,在以下情況可能出現異常

  1. 使用element 的dialog,並且把echart圖標放置在dialog中,第一次打開dialog時,echart圖形沒渲染,再次打開才會渲染
  2. 將G6作為一個組件,並且在watch鉤子函數中監視圖表數據的變動時,watch會報找不到attribute,其實就是dom還沒渲染好

以上問題都可以通過nextTick解決,完畢。
加幾個寫的不錯的鏈接

  • Vue生命周期與Vue.nextTick()使用
  • 簡單理解Vue中的nextTick

記vue nextTick用到的地方