欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue項目中數(shù)據的深度監(jiān)聽或對象屬性的監(jiān)聽實例

 更新時間:2020年07月17日 10:02:54   作者:_cris  
這篇文章主要介紹了Vue項目中數(shù)據的深度監(jiān)聽或對象屬性的監(jiān)聽實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

眾所周知,vue項目中對數(shù)據的監(jiān)聽,提供了一個很好的鉤子watch,watch可以極其方便的監(jiān)聽我們常用數(shù)據類型值的變化,但通常當我們想監(jiān)聽一個對象中,某個屬性值的變化時,很難達到我們預期的效果。根據vue的文檔,不難發(fā)現(xiàn),使用數(shù)據的深度監(jiān)聽來達到這一效果。具體實現(xiàn)如下:

watch: {
  evlist: {
  handler(val, oldVal) {
   this.isTeam = val.projectParty;
   this.pjtid = val.pjtid;
   this.isFinish = val.projectSelfValue;
  },
  deep: true
  },
 
 },

這其中,evlist是一個對象,val監(jiān)聽到變化后的值,oldVal是變化前的值。

補充知識:vue中的監(jiān)聽屬性和計算屬性

計算屬性(computed)

vue中的計算屬性是非常棒的東西,它兼具了邏輯和變量。可以讓我們不再關注視圖層,值關注代碼的邏輯即可。至于數(shù)據如何展現(xiàn)則只需由Vue負責,不需要我們的參與。

所以如果在面臨選擇是使用計算屬性還是監(jiān)視屬性的情況下,優(yōu)先選擇計算屬性

  <p>Original message: "{{ message }}"</p>
  <p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>

export default {
  data(){
   return { 
    message: 'Hello',
   }
  },
  computed: {
   reversedMessage: function () {
    return this.message.split('').reverse().join('');
   }
  }

可以看到我們使用的計算屬性替代了模板內表達式的功能。所以,對于任何復雜邏輯,你都應當使用計算屬性。而且計算屬性讓我們只關注于邏輯實現(xiàn),至于后期的數(shù)據在界面上的表示形式則直接由Vue.js負責,讀者可以看到我們并沒有直接參與頁面展示上面來

此外,傳統(tǒng)的直接通過表達式求值的方式需要我們自行取值,而計算屬性是基于它們的依賴進行緩存的。只在相關依賴發(fā)生改變時它們才會重新求值。也就是說,計算屬性會直接從緩存拿值,并伴隨著值的改變而改變。而傳統(tǒng)的直接通過表達式求值的方式需要我們在拿值之前需要執(zhí)行一次getter()函數(shù)

監(jiān)聽屬性(watch)

監(jiān)聽屬性其實質是一次異步回調,希望讀者在想到使用監(jiān)聽屬性之前多考慮能否采用計算屬性來取代監(jiān)聽屬性

對比同一個功能實現(xiàn)

//計算屬性
computed: {
  fullName2: function () {
    return this.firstName + ' ' + this.lastName
  }
}
//監(jiān)聽屬性
watch: {
   firstName: function (val) {
    this.fullName = val + ' ' + this.lastName
  },
  lastName: function (val) {
    this.fullName = this.firstName + ' ' + val
  }
} 

可以看到計算屬性的代碼更加簡潔也更加高效,而且就實現(xiàn)效果而言,明顯計算屬性會更好一點

以上這篇Vue項目中數(shù)據的深度監(jiān)聽或對象屬性的監(jiān)聽實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論