首頁 web前端 js教程 Vue.js計算屬性computed與watch(5)

Vue.js計算屬性computed與watch(5)

Dec 13, 2016 pm 04:33 PM

在模板中綁定表達式是非常方便的,但是它們實際上只用於簡單的操作。模板是為了描述視圖的結構。在模板中放入太多的邏輯會讓模板過重且難以維護。這就是為什麼 Vue.js 將綁定表達式限制為一個表達式。如果需要多於一個表達式的邏輯,應使用**計算屬性**。

Vue實例的computed的屬性

<div class="test">    
<p>原始的信息{{message}}</p>   
<p>计算后的信息{{ComputedMessage}}</p>  
</div>
登入後複製

js程式碼

var myVue = new Vue({    
el: ".test",    
data: {      
message:12    
},    
computed:{      
ComputedMessage:function () {        
return this.message+10;      
}   
}  
});
登入後複製

介面會顯示12 和22 

上述的方式是一種緩衝的實現的效果,這種實現的方式依賴於它的緩寸,計算得到的屬性只有在相關依賴(message)改變的時候才會重新取值,這就意味著只要message沒有改變的時候,多次訪問ComputedMessage都不會再重新執行計算的這個屬性。 。

計算後的ComputedMessage屬性總是依賴message的

透過呼叫函數實現同樣的效果

<div class="test">    
<p>原始的信息{{message}}</p>    
<p>计算后的信息{{MessageFunction()}}</p>  
</div>
登入後複製

js程式碼

var myVue = new Vue({    
el: ".test",    
data: {      
message:12    
},    
methods:{      
MessageFunction:function () {        
return this.message+10;      
}   
}  
});
登入後複製

得到的結果和上面的結果是一樣的,但是每次被重新渲染的時候被重新調用。
所以使用上述兩種方式的時候,首先要確定你是否需要藉助快取

使用vue實例的watch

這個沒有看懂呀
但是使用computed這個屬性更加的方便和快捷

<div class="test">   
<p>原始的信息{{fullName}}</p> 
</div>
登入後複製

js代碼

var myVue = new Vue({   
el: ".test",   
data: {     
firstName:"fur",     
lastName:"bool"  
},   
computed:{     
fullName:function () {       
return this.firstName+this.lastName     
}   
} 
});
登入後複製

而且你可以computed屬性設定setter getter是預設就有的。

示範set和get的呼叫過程

<div class="test">   
<p>原始的信息{{fullName}}</p>   
<button @click="fu">test</button> 
</div>
登入後複製

js程式碼

var myVue = new Vue({    
el: ".test",    
data: {      
firstName:"fur",      
lastName:"bool",      
fullName:"sasas dsdsd dsds"   
},    
computed:{      
fullName:{        
get:function () {          
console.log("get")          
return this.firstName+this.lastName        
},        
set:function(value){          
var names=value.split(" ");          
this.firstName=names[0];          
this.lastName=names[names.length-1];          
console.log("set");        
}     
 }    
 },    
 methods:{      
 fu:function () {        
 myVue.fullName="sasas dsdsd dsds";        
 console.log(myVue.firstName);   //sasas        
 console.log(myVue.lastName);  //dsds      
 }    
 } 
  });
登入後複製

首先會輸出get;

在點擊按鈕為fullName賦值的時候先呼叫set 再呼叫方法。

自訂的Watcher

雖然計算屬性在大多數情況下是非常合適的,但是有的時候也需要自訂一個watcher。這是因為你想要在資料變化回應的時候,執行非同步操作胡總和其他的操作是非常有用的

以上就是Vue.js計算屬性computed與watch,更多先關內容請關注PHP中文網(www .php.cn)!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

用戶遭遇罕見故障 三星 Watch 智慧手錶突現白螢幕問題 用戶遭遇罕見故障 三星 Watch 智慧手錶突現白螢幕問題 Apr 03, 2024 am 08:13 AM

你可能遇到過智慧型手機螢幕出現綠色線條的問題,即使沒看過,也一定在網路上看過相關圖片。那麼,智慧手錶螢幕變白的情況你有遇見過嗎? 4月2日,CNMO從外媒了解到,一名Reddit用戶在社群平台上分享了一張圖片,展示了三星Watch系列智慧手錶螢幕變白的情況。該用戶寫道:"我離開時正在充電,回來時就這樣了,我嘗試重啟,但重啟過程中屏幕還是這樣。"三星Watch智能手錶屏幕變白這位Reddit用戶並未指明這款智能手錶的具體型號。不過,從圖片上看,應該是三星Watch5。此前,另一位Reddit用戶也報告

圖文詳解如何在Vue專案中整合Ace程式碼編輯器 圖文詳解如何在Vue專案中整合Ace程式碼編輯器 Apr 24, 2023 am 10:52 AM

Ace 是一個用 JavaScript 寫的可嵌入程式碼編輯器。它與 Sublime、Vim 和 TextMate 等原生編輯器的功能和效能相符。它可以很容易地嵌入到任何網頁和 JavaScript 應用程式中。 Ace 被維護為Cloud9 IDE的主要編輯器 ,並且是 Mozilla Skywriter (Bespin) 專案的繼承者。

探討如何在Vue3中撰寫單元測試 探討如何在Vue3中撰寫單元測試 Apr 25, 2023 pm 07:41 PM

在當今前端開發中,Vue.js 已經成為了一個非常流行的框架。隨著 Vue.js 的不斷發展,單元測試變得越來越重要。今天,我們將探討如何在 Vue.js 3 中編寫單元測試,並提供一些最佳實踐和常見的問題及解決方案。

Vue中JSX語法和模板語法的簡單比較(優劣勢分析) Vue中JSX語法和模板語法的簡單比較(優劣勢分析) Mar 23, 2023 pm 07:53 PM

在Vue.js中,開發人員可以使用兩種不同的語法來建立使用者介面:JSX語法和範本語法。這兩種文法各有優劣,以下就來探討它們的差異和優劣勢。

淺析vue怎麼實現檔案切片上傳 淺析vue怎麼實現檔案切片上傳 Mar 24, 2023 pm 07:40 PM

在實際開發專案過程中有時候需要上傳比較大的文件,然後呢,上傳的時候相對來說就會慢一些,so,後台可能會要求前端進行文件切片上傳,很簡單哈,就是把比如說1個G的檔案流切割成若干個小的檔案流,然後分別請求介面傳遞這個小的檔案流。

vue3如何資料監聽watch/watchEffect vue3如何資料監聽watch/watchEffect May 12, 2023 pm 06:31 PM

我們都知道監聽器的作用是在每次響應式狀態發生變化時觸發,在組合式API中,我們可以使用watch()函數和watchEffect()函數,當你更改了響應式狀態,它可能會同時觸發Vue組件更新和偵聽器回調。預設情況下,使用者建立的偵聽器回調,都會在Vue元件更新之前被呼叫。這表示你在偵聽器回呼中存取的DOM將是被Vue更新之前的狀態。那麼,我們來看一下,怎麼才能好好的運用他們呢?他們之間又有什麼差別呢? watch()函數watch需要偵聽特定的資料來源,例如偵聽一個ref,watch的第一個參數可以

實例詳解vue3實現chatgpt的打字機效果 實例詳解vue3實現chatgpt的打字機效果 Apr 18, 2023 pm 03:40 PM

在做 chatgpt 鏡像站的時候,發現有些鏡像站是沒做打字機的遊標效果的,就只是文字輸出,是他們不想做嗎?反正我想做。於是我仔細研究了一下,實現了打字機效果加遊標的效果,現在分享一下我的解決方案以及效果圖~

手把手教你使用Vue3實作一個飄逸元素拖曳功能 手把手教你使用Vue3實作一個飄逸元素拖曳功能 Mar 30, 2023 pm 08:57 PM

怎麼實現元素拖曳功能?以下這篇文章一步一步帶大家了解如何使用Vue3實作一個飄逸元素拖曳功能,並在實例中了解相關知識點,希望對大家有幫助!

See all articles