面試題-Vue 中的 computed 和 watch 的區別在哪裏

共同點:

都是監聽數據變化的方法,用來觀察和響應Vue實例上的數據變動。

可以將複雜的邏輯放入到計算屬性和watch 中,從而使得代碼更加整齊,分工明確

不同點:

  1. computed
    • 類型:{ [key: string]: Function | { get: Function, set: Function } }
    • 計算屬性將被混入到 Vue 事例中。所有 getter 和 setter 的 this 上下文自動地綁定爲 Vue 實例。但是如果使用了箭頭函數,那麼此時使用 this 就不會指向組件實例了。而且計算的結果是會被緩存的,除非依賴的響應式屬性變化纔會重新計算,這無疑在性能上更加友好。
    • 計算屬性將變量的 get 屬性重寫成了定義的函數方法,實現了數據劫持。
    • 計算屬性可以監聽 data 和 props 裏的值,只有當被監聽的數據發生改變時,纔會重新計算,從而得到一個新值。
    • 場景:一個數據受到多個數據的影響
  2. watch
    • 類型:{ [key: string]: string | Function | Object | Array }
    • 那這裏 key 是咱們要監聽的數據,值可以是回調函數,方法名或者對象。同樣的如果在watch 中使用箭頭函數,則不要使用 this ,因爲此時它不會指向 Vue 實例。
    • 會產生一個 watcher 對象,在監視的屬性每次變動時都會觸發回調
    • 監聽 data 裏的已知變量的變化
    • 場景:一個數據影響多個數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章