Vue計算屬性是什么-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“Vue計算屬性是什么”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“Vue計算屬性是什么”這篇文章吧。

我們提供的服務有:網(wǎng)站制作、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、君山ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術(shù)的君山網(wǎng)站制作公司

具體內(nèi)容如下

①模板內(nèi)的表達式實際上只用于簡單的運算,對于復雜邏輯,使用計算機屬性。

②基礎(chǔ)例子:

<div id = "example"> 
 <p>Original message:"{{message}}"</p> 
 <p>Computed reversed message:"{{reversedMessage}}"</p> 
</div>
var vm = new Vue({ 
 el:"#example", 
 data:{ 
 message:"Hello" 
 }, 
 computed:{ 
 //a computed getter 
 reversedMessage:function(){ 
  //'this' points to the vm instance 
  return this.message.split('').reverse().join('') 
 } 
 } 
})

這里我們聲明了一個計算機屬性reversedMessage,我們提供的函數(shù)將用作屬性vm.reversedMessage的getter。

③計算機緩存 vs Methods

可以通過調(diào)用表達式中的method來達到同樣的效果:

<p>Reversed message:"{{reversedMessage}}"</p>
//in component 
methods:{ 
 reversedMessage:function(){ 
 return this.message.split('').reverse()/join('') 
 } 
}

可以將同一個函數(shù)定義為一個method而不是一個計算機屬性。對于最終的結(jié)果,兩種方式確實是相同的。然而不同的計算機屬性是基于它們的依賴進行緩存的。計算屬性只有在它的相關(guān)依賴發(fā)生改變時才會重新求值,這就意味著只要message還沒有改變,多次訪問reversedMessage計算屬性會立即返回之前的計算結(jié)果,而不必再次執(zhí)行函數(shù)。
下面的計算屬性將不再更新,因為Date.now()不是響應式依賴:

computed:{ 
 now:function(){ 
 return Date.now() 
 } 
}

只要發(fā)生重新渲染,method調(diào)用總會執(zhí)行該函數(shù)。

④computed屬性 vs watch屬性

<div id= "demo">{{fullName}}</div>

watch:

var vm = new Vue({ 
 el:"#demo", 
 data:{ 
 firstName:"Foo", 
 lastName:"Bar", 
 fullName:"Foo Bar" 
 }, 
 watch:{ 
 firstName:function(val){ 
  this.fullName = val + '' + this.lastName 
 }, 
 lastName:function(val){ 
 this.fullName = this.firstName + '' +val 
 } 
 } 
})

computed:

var vm = new Vue({ 
 el:'#demo', 
 data:{ 
 firstName:'Foo', 
 lastName:'Bar' 
 }, 
 computed:{ 
 fullName:function(){ 
  return this.firstName + ' ' + this.lastName 
 } 
 } 
})

⑤計算setter:

計算屬性默認只有g(shù)etter,不過在需要是可以提供一個setter:

// ... 
computed: { 
 fullName: { 
 // getter 
 get: function () { 
  return this.firstName + ' ' + this.lastName 
 }, 
 // setter 
 set: function (newValue) { 
  var names = newValue.split(' ') 
  this.firstName = names[0] 
  this.lastName = names[names.length - 1] 
 } 
 } 
} 
// ...

在運行vm.fullName = 'John Doe'時,setter會被調(diào)用,vm.firstName和vm.lastName  也相應的會被更新。

⑥觀察watchers

   當想要在數(shù)據(jù)變化相應時,執(zhí)行異步操作或開銷較大的操作,這是很有用的。

<div id="watch-example"> 
 <p> 
 Ask a yes/no question: 
 <input v-model="question"> 
 </p> 
 <p>{{ answer }}</p> 
</div>
<script src="https://unpkg.com/axios@0.12.0/dist/axios.min.js"></script> 
<script src="https://unpkg.com/lodash@4.13.1/lodash.min.js"></script> 
<script> 
var watchExampleVM = new Vue({ 
 el: '#watch-example', 
 data: { 
 question: '', 
 answer: 'I cannot give you an answer until you ask a question!' 
 }, 
 watch: { 
 // 如果 question 發(fā)生改變,這個函數(shù)就會運行 
 question: function (newQuestion) { 
  this.answer = 'Waiting for you to stop typing...' 
  this.getAnswer() 
 } 
 }, 
 methods: { 
 // _.debounce 是一個通過 lodash 限制操作頻率的函數(shù)。 
 // 在這個例子中,我們希望限制訪問yesno.wtf/api的頻率 
 // ajax請求直到用戶輸入完畢才會發(fā)出 
 // 學習更多關(guān)于 _.debounce function (and its cousin 
 // _.throttle), 參考: https://lodash.com/docs#debounce 
 getAnswer: _.debounce( 
  function () { 
  var vm = this 
  if (this.question.indexOf('?') === -1) { 
   vm.answer = 'Questions usually contain a question mark. ;-)' 
   return 
  } 
  vm.answer = 'Thinking...' 
  axios.get('https://yesno.wtf/api') 
   .then(function (response) { 
   vm.answer = _.capitalize(response.data.answer) 
   }) 
   .catch(function (error) { 
   vm.answer = 'Error! Could not reach the API. ' + error 
   }) 
  }, 
  // 這是我們?yōu)橛脩敉V馆斎氲却暮撩霐?shù) 
  500 
 ) 
 } 
}) 
</script>

在這個示例中,使用watch選項允許我們執(zhí)行異步操作,限制我們執(zhí)行該操作的頻率,并在得到最終結(jié)果前,設置中間狀態(tài),這是計算屬性無法做到的。

以上是“Vue計算屬性是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設公司行業(yè)資訊頻道!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站bm7419.com,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文標題:Vue計算屬性是什么-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://bm7419.com/article14/dicsde.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、服務器托管Google、網(wǎng)站導航、App開發(fā)App設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計