1. 程式人生 > >【vue】清理程式碼

【vue】清理程式碼

// 一次性將這個日期選擇器附加到一個輸入框上
// 它會被掛載到 DOM 上。
mounted: function () {
  // Pikaday 是一個第三方日期選擇器的庫
  this.picker = new Pikaday({
    field: this.$refs.input,
    format: 'YYYY-MM-DD'
  })
},
// 在元件被銷燬之前,
// 也銷燬這個日期選擇器。
beforeDestroy: function () {
  this.picker.destroy()
}

  

這裡有兩個潛在的問題:

  • 它需要在這個元件例項中儲存這個 picker
    ,如果可以的話最好只有生命週期鉤子可以訪問到它。這並不算嚴重的問題,但是它可以被視為雜物。
  • 我們的建立程式碼獨立於我們的清理程式碼,這使得我們比較難於程式化地清理我們建立的所有東西。

可以通過一個程式化的偵聽器解決這兩個問題:

mounted: function () {
  var picker = new Pikaday({
    field: this.$refs.input,
    format: 'YYYY-MM-DD'
  })

  this.$once('hook:beforeDestroy', function () {
    picker.destroy()
  })
}

  使用了這個策略,我們在建立程式碼中就可以進行程式碼清理工作,保持獨立性;也不需要在元件例項中儲存picker

 來自 https://cn.vuejs.org/v2/guide/components-edge-cases.html#%E7%A8%8B%E5%BA%8F%E5%8C%96%E7%9A%84%E4%BA%8B%E4%BB%B6%E4%BE%A6%E5%90%AC%E5%99%A8