以Vue為例,其watch和computed的區(qū)別如下:
1、computed支持緩存,只有依賴數(shù)據(jù)發(fā)生改變,才會重新進行計算;而watch不支持緩存,數(shù)據(jù)變,直接會觸發(fā)相應的操作。
2、computed不支持異步,當computed內(nèi)有異步操作時無效,無法監(jiān)聽數(shù)據(jù)的變化;而watch支持異步。
3、computed屬性值會默認走緩存,計算屬性是基于它們的響應式依賴進行緩存的,也就是基于data中聲明過或者父組件傳遞的props中的數(shù)據(jù)通過計算得到的值;而watch監(jiān)聽的函數(shù)接收兩個參數(shù),第一個參數(shù)是最新的值,第二個參數(shù)是輸入之前的值。
4、如果一個屬性是由其它屬性計算而來的,這個屬性依賴其它屬性,是一個多對一或者一對一,一般用computed;而當一個屬性發(fā)生變化時,需要執(zhí)行對應的操作;一對多一般用watch。
5、如果computed屬性屬性值是函數(shù),那么默認會走get方法;函數(shù)的返回值就是屬性的屬性值;在computed中的,屬性都有一個get和一個set方法,當數(shù)據(jù)變化時,調(diào)用set方法。而watch監(jiān)聽數(shù)據(jù)必須是data中聲明過或者父組件傳遞過來的props中的數(shù)據(jù),當數(shù)據(jù)變化時,觸發(fā)其它操作,函數(shù)有兩個參數(shù)。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com