watch和computed的定義和作用
watch偵聽器:
1.更多的是觀察的作用短纵,無緩存性带污,類似于某些數(shù)據(jù)的監(jiān)聽回調(diào),每當(dāng)監(jiān)聽的數(shù)據(jù)變化時都會執(zhí)行回調(diào)進行后續(xù)操作香到。
2.監(jiān)聽data或者props傳來的數(shù)據(jù)鱼冀,發(fā)生變化時會觸發(fā)相應(yīng)操作。有兩個參數(shù):
immediate:立即觸發(fā)回調(diào)函數(shù)悠就。
deep:深度監(jiān)聽千绪,發(fā)現(xiàn)數(shù)據(jù)內(nèi)部的變化,在復(fù)雜數(shù)據(jù)類型中使用梗脾,例如數(shù)組中的對象發(fā)生變化荸型。需要注意的是,deep無法監(jiān)聽到數(shù)組和對象內(nèi)部的變化炸茧。
computed計算屬性:
計算屬性可以從組件數(shù)據(jù)派生出新數(shù)據(jù)瑞妇,最常見的使用方式是設(shè)置一個函數(shù),返回計算之后的結(jié)果梭冠,依賴其它屬性值辕狰,并且 computed 的值有緩存,只有它依賴的屬性值發(fā)生改變控漠,下一次獲取 computed 的值時才會重新計算 computed 的值蔓倍。
區(qū)別:
計算屬性(computed)可以從組件數(shù)據(jù)派生出新數(shù)據(jù),最常見的使用方式是設(shè)置一個函數(shù),返回計算之后的結(jié)果偶翅,computed具備緩存性默勾,不支持異步操作。
偵聽器(watch)可以偵測某個響應(yīng)式數(shù)據(jù)的變化并執(zhí)行副作用倒堕,watch不具備緩存性灾测,但可以執(zhí)行異步操作等復(fù)雜邏輯。
使用場景及選擇:
computed:是多對一垦巴,多個數(shù)據(jù)影響一個媳搪。當(dāng)需要進行數(shù)值計算,并且依賴于其它數(shù)據(jù)時,應(yīng)該使用 computed骤宣,因為可以利用 computed 的緩存特性秦爆,避免每次獲取值時都要重新計算。
watch:是一對多憔披,一個數(shù)據(jù)發(fā)生變化等限,執(zhí)行相應(yīng)操作會影響多個數(shù)據(jù)。當(dāng)需要在數(shù)據(jù)變化時執(zhí)行異步或開銷較大的操作時芬膝,應(yīng)該使用 watch望门,使用 watch 選項允許執(zhí)行異步操作 ( 訪問一個 API ),限制執(zhí)行該操作的頻率锰霜,并在得到最終結(jié)果前筹误,設(shè)置中間狀態(tài)。這些都是計算屬性無法做到的癣缅。