計算屬性實質就是一個方法,只不過在使用的時候只把方法名稱作為屬性使用,不需要加(),而不是當做方法使用。
只有計算屬性的方法內部所用到的任何data中的數據發生變化,就會立刻重新計算這個計算屬性的值。
計算屬性的求值結果會被緩存起來方便下次直接使用,如果計算屬性方法中,所有數據都沒有發生過變化,則不會重新計算屬性求值。
computed用來監控自己定義的變量,該變量不在data里面聲明,直接在computed里面定義,然后就可以在頁面上進行雙向數據綁定展示出結果或者用作其他處理;
computed比較適合對多個變量或者對象進行處理后返回一個結果值,也就是數多個變量中的某一個值發生了變化則我們監控的這個值也就會發生變化,
舉例:購物車里面的商品列表和總金額之間的關系,只要商品列表里面的商品數量發生變化,或減少或增多或刪除商品,總金額都應該發生變化。這里的這個總金額使用computed屬性來進行計算是最好的選擇。
而watch主要用於監控vue實例的變化,它監控的變量當然必須在data里面聲明才可以,它可以監控一個變量,也可以是一個對象。
watch一般用於監控路由、input輸入框的值特殊處理等等,它比較適合的場景是一個數據影響多個數據