您好,登錄后才能下訂單哦!
methods :執行多次調用的時候 ,當數據沒有發生變化,計算屬性里面的函數只需要執行一次,而methods調用幾次,就執行幾次,哪個性能更高?vue內部是對計算屬性做了一層緩存的,它會觀察數據有沒有發生變化,如果沒有變化的話,會吧原來的結果直接返回出去,而不是重新計算下,如果你不希望有緩存,請用方法代替
computed: 依賴追蹤機制為基礎 根據a的值變化 計算出新的值 默認是以get 方法 必須要有return 而且不支持異步 ,基于它們的依賴進行緩存,只有它的相關依賴改變時才會重新求值,為什么需要緩存?假設我們有一個性能開銷比較大的計算屬性A,它需要遍歷一個巨大的數組并做大量的計算,然后我們可能有其他的屬性依賴與A,如果沒有緩存,我們將不可避免地多次執行A的getter,多個數據影響一個數據(狐朋狗友帶壞你)。某【一些】變量發生變化時,影響的【單個】結果對應地發生改變。計算屬性一般沒有set方法,只讀屬性。
watched: 依賴追蹤機制為基礎 觀察a的值變化 當a的值變化時,干一件事 ,也叫觀察者、偵聽器,屬性名要和被觀察的值的名字一致 a(newVal,oldVal){ },只有值變化的時候才會觸發變化,支持數據變化時執行異步,有關計算的事watch做起來比較麻煩,用computed做計算比較簡單,監聽的對象個數:watch只對一個對象進行監聽,computed對多個對象進行監聽(如果有兩個對象其中任意一個做變化,且不管其中哪個對象變化都是做相同的動作的時候應該怎么辦呢,把這兩個對象寫在一個對象里面,再watch這個對象,多個watch之間應該盡量避免數據耦合),在某些情況下,確實需要跟蹤觀察值的變化,確實要知道變化前的值和變化后的值,那么就需要使用watch。比如我現在子組件中,需要實現這樣一個功能,如果props中的某個對象發生了變化,那么就觸發對應的methods。那么這個時候你需要用什么方法來觸發對應的methods呢,這里很顯然需要使用watch。當你想要在數據變化響應時,執行異步操作或開銷較大的操作,選擇使用watch,一個數據影響多個數據(一粒老鼠屎糟蹋一鍋粥)。適合監控場景,某【一個】變量改變時需要做什么操作;類似于onchange,適合耗時操作,如網絡請求等。所以每個方法的存在,都是根據業務場景來的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。