Vue中計算屬性computed與偵聽器watch的區別

月落梅影發表於2019-08-13
  1. 從屬性名上,computed是計算屬性,也就是依賴其它的屬性計算所得出最後的值,通常就是簡單的計算,一般用於純粹的取值計算;watch是去監聽一個值的變化,然後執行相對應的函式,做一些特定的操作,一般用於資料變化時執行非同步操作或開銷比較大的操作。

  2. 從實現上,computed的值在getter執行後是會快取的,只有在它依賴的屬性值改變之後,下一次獲取computed的值時才會重新呼叫對應的getter來計算;watch在每次監聽的值變化時,都會執行回撥。

  3. 如果一個值依賴多個屬性(多對一),用computed肯定是更加方便的;如果一個值變化後會引起一系列操作,或者一個值變化會引起一系列值的變化(一對多),用watch更加方便一些。

  4. computed會產生新的屬性,產生的新的屬性與data中原有的屬性功能沒有區別,用法一樣;watch不會產生新的屬性。

  5. computed會在vue例項化過程中執行一次;watch在vue初始化時,不會執行。

  6. watch和computed並沒有哪個更底層,watch內部呼叫的是vm.$watch,它們的共同之處就是每個定義共的屬性都單獨建立了一個Watcher物件。

相關文章