天天看點

Vue中的computed(計算屬性)和watch(監聽屬性)的差別

計算屬性computed :

  1. 支援緩存

    ,隻有

    依賴資料發生改變

    ,才會重新進行計算
  2. 不支援異步

    ,當computed内有異步操作時無效,無法監聽資料的變化
  3. computed 屬性值會

    預設走緩存

    ,計算屬性是基于它們的響應式依賴進行緩存的,也就是

    基于data中

    聲明過或者

    父元件傳遞的props中的資料

    通過計算得到的值
  4. 如果一個屬性是由其他屬性計算而來的,這個屬性依賴其他屬性,是一個多對一或者一對一,一般用computed
  5. 如果computed屬性屬性值是函數,那麼預設會走get方法;函數的

    傳回值就是屬性的屬性值

    ;在computed中的,屬性都有一個get和一個set方法,當資料變化時,調用set方法。
    Vue中的computed(計算屬性)和watch(監聽屬性)的差別

偵聽屬性watch:

  1. 不支援緩存,資料變,直接會觸發

    相應的操作;
  2. watch支援異步

  3. 監聽的函數接收

    兩個參數,第一個參數是最新的值;第二個參數是輸入之前的值

  4. 當一個屬性發生變化時,需要執行對應的操作;

    一對多

  5. 監聽資料必須是data中聲明過或者父元件傳遞過來的props中的資料,當資料變化時,觸發其他操作,函數有兩個參數,
    1. immediate:元件加載立即觸發回調函數執行,
    2. deep: 深度監聽,為了發現對象内部值的變化,複雜類型的資料時使用,例如數組中的對象内容的改變,注意監聽數組的變動不需要這麼做。注意:deep無法監聽到數組的變動和對象的新增,參考vue數組變異,隻有以響應式的方式觸發才會被監聽到。
Vue中的computed(計算屬性)和watch(監聽屬性)的差別

監聽的對象也可以寫成字元串的形式

Vue中的computed(計算屬性)和watch(監聽屬性)的差別

當需要在資料變化時執行異步或開銷較大的操作時,這個方式是最有用的。這是和computed最大的差別。