computed和watch有什麼區別

computed

  • computed是計算屬性,也就是計算值,它更多用於計算值的場景
  • computed具有緩存性,computed的值在getter執行後是會緩存的,只有在它依賴的屬性值改變之後,下一次獲取computed的值時纔會重新調用對應的getter來計算
  • computed適用於計算比較消耗性能的計算場景

watch

  • 更多的是「觀察」的作用,類似於某些數據的監聽回調,用於觀察props $emit或者本組件的值,當數據變化時來執行回調進行後續操作
  • 無緩存性,頁面重新渲染時值不變化也會執行
  • 當需要監聽一個對象的改變時,普通的watch方法無法監聽到對象內部屬性的改變,此時就需要deep屬性對對象進行深度監聽。當我們需要深度監聽對象中的屬性時,可以打開deep:true選項,這樣便會對對象中的每一項進行監聽。
  • handler\immediate。watch最初綁定的時候是不會執行的, 當值第一次綁定時,不會執行監聽函數,只有值發生改變時纔會執行。如果我們需要在最初綁定值的時候也執行函數,則就需要用到immediate屬性

運用場景

運用場景:

  • 當我們需要進行數值計算,並且依賴於其它數據時,應該使用 computed,因爲可以利用 computed 的緩存特性,避免每次獲取值時,都要重新計算;
  • 當我們需要在數據變化時執行異步或開銷較大的操作時,應該使用 watch,使用watch選項允許我們執行異步操作 ( 訪問一個 API ),限制我們執行該操作的頻率,並在我們得到最終結果前,設置中間狀態。這些都是計算屬性無法做到的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章