1-9 Vue的計算屬性
Vue的計算屬性(computed properties)
-
<strong>起因?</strong>
- 雖然在模板中繫結表示式是非常便利的,但是它們實際上只用於簡單的操作。在模板中放入太多的邏輯會讓模板過重且難以維護。比如:
<div id="example"> {{ message.split('').reverse().join('') }} </div>
- 這樣,模板不再簡單和清晰。在實現反向顯示 message 之前,你應該通過一個函式確認它。
- 所以,Vue.js提供了 <strong>計算屬性</strong> 來讓我們去處理例項中的複雜邏輯。
計算屬性 (computed properties) 就是不存在於原始資料中,而是在執行時實時計算出來的屬性。
-
案例如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>計算屬性</title> </head> <body> <div id="app"> <p>{{fullname}}</p> <p>{{reverse}}</p> </div> <script src="js/vue.js"></script> <script> var app = new Vue({ el: '#app', data:{ firstname: '張', lastname: '三豐' }, // 計算屬性選項 computed: { fullname: function () { return this.firstname + this.lastname; }, reverse: function () { return (this.firstname + this.lastname).split('').reverse().join(''); } } }) </script> </body> </html>
在上面的案例中,計算屬性
fullname 和 reverse
的值始終取決於firstname 和 lastname
。計算屬性預設只有 getter ,當然在需要時我們也可以提供一個 setter 。計算屬性被設計出來的目的在於:getter 是乾淨無副作用的。-
計算屬性 和 Methods的區別?
當頁面重新渲染(不是重新整理)的時候,計算屬性不會變化,直接讀取快取使用,適合較大量的計算和改變頻率較低的屬性;而method,就是當頁面重新渲染的時候(頁面元素的data變化,頁面就會重新渲染),都會重新呼叫method。
如果不希望有快取,我們可以用method取代computed。
疑惑:為什麼需要快取?
假設我們有一個重要的計算屬性 A ,這個計算屬性需要一個巨大的陣列遍歷和做大量的計算。然後我們可能有其他的計算屬性依賴於 A 。如果沒有快取,我們將不可避免的多次執行 A 的 getter !
-
<strong>計算屬性的setter方法</strong>
- 計算屬性預設只有 getter ,不過在需要時你也可以提供一個 setter :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="app"> <p>{{ fullName }}</p> </div> <script src="js/vue.js"></script> <script> var app = new Vue({ el: '#app', data: { firstName: 'Tom', lastName: 'Jack' }, computed: { fullName: { // get方法 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]; } } } }) </script> </body> </html>
- 執行結果:
相關文章
- Vue的計算屬性Vue
- vue計算屬性和vue實力的屬性和方法Vue
- Vue 計算屬性與方法Vue
- Vue.js 計算屬性Vue.js
- Vue(5)計算屬性computedVue
- Vue 框架-04-計算屬性Vue框架
- vue3計算屬性的可寫屬性 set 與 getVue
- 3. Vue語法--計算屬性Vue
- Vue計算屬性和偵聽器Vue
- vue.js計算屬性(getter | setter)Vue.js
- vue.js計算屬性(computed)Vue.js
- Vue — 計算屬性(computed)詳解Vue
- vue計算屬性 監聽 方法的區別Vue
- Vue中計算屬性和偵聽器Vue
- Vue筆記三——計算屬性(computed)Vue筆記
- vue.js計算屬性用法(computed)Vue.js
- vue計算屬性詳解——小白速會Vue
- 深入理解 Vue Computed 計算屬性Vue
- 計算屬性
- 關於vue的使用計算屬性VS使用計算方法的問題Vue
- Vue學習之理解計算屬性computedVue
- vue 基礎入門筆記 19:計算屬性和偵聽屬性Vue筆記
- Vue中的計算屬性和偵聽器比較Vue
- Vue之computed(計算屬性)詳解get()、set()Vue
- 【Vue】計算屬性 監聽屬性 元件通訊 動態元件 插槽 vue-cli腳手架Vue元件
- 前端【VUE】03-vue【computed 計算屬性】【watch 偵聽器】前端Vue
- Vue中如何使用方法、計算屬性或觀察者Vue
- Vue3原始碼解析(computed-計算屬性)Vue原始碼
- vue3的computed計算屬性返回值註解Vue
- Vue.js入門學習 -- 計算屬性Computed( 十一)Vue.js
- 【原始碼系列#03】Vue3計算屬性原理(Computed)原始碼Vue
- Vue原始碼學習(十七):實現computed計算屬性Vue原始碼
- Vue中計算屬性computed與偵聽器watch的區別Vue
- [Vue.js進階]從原始碼角度剖析計算屬性的原理Vue.js原始碼
- 深入理解Vue 3:計算屬性與偵聽器的藝術Vue
- vue.js計算屬性用法(computed)技巧,依賴其他vue例項的資料Vue.js
- Vue的進階屬性Vue
- 全面瞭解Vue3的 ref 和相關函式和計算屬性Vue函式