vue中 methods、watch、computed之間的差別
一、計算屬性
當頁面中有某些資料依賴其他資料進行變動的時候,可以使用計算屬性。
<div id="app">
{{fullName}}
</div>
需要注意的是,就算在data中沒有直接宣告出要計算的變數,也可以直接在computed中寫入。var vm = new Vue({ el: '#app', data: { firstName: 'Foo', lastName: 'Bar', }, computed: { fullName: function () { return this.firstName + ' ' + this.lastName } } })
計算屬性預設只有getter,可以在需要的時候自己設定setter:
這個時候在控制檯直接執行vm.fullName = ‘bibi wang’,相應的firstName和lastName也會改變。// ... 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] } } }
computed屬性不能與data一樣,不然無法computed,由於已經在data之中定義,所以會報錯The computed property "xxx" is already defined in data
二、watch
很多人覺得watch和computed很相似,watch用於觀察和監聽頁面上的vue例項,當然在大部分情況下我們都會使用computed,但如果要在資料變化的同時進行非同步操作或者是比較大的開銷,那麼watch為最佳選擇。watch為一個物件,鍵是需要觀察的表示式,值是對應回撥函式。值也可以是方法名,或者包含選項的物件。直接引用文件例子
var vm = new Vue({
el: '#app',
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
}
}
})
如果在data中沒有相應的屬性的話,是不能watch的,這點和computed不一樣。三、methods
方法,跟前面的都不一樣,我們通常在這裡面寫入方法,只要呼叫就會重新執行一次,相應的有一些觸發條件,在某些時候methods和computed看不出來具體的差別,但是一旦在運算量比較複雜的頁面中,就會體現出不一樣。
需要注意的是,computed是具有快取的,這就意味著只要計算屬性的依賴沒有進行相應的資料更新,那麼computed會直接從快取中獲取值,多次訪問都會返回之前的計算結果。
總結:
在computed和watch方面,一個是計算,一個是觀察,在語義上是有區別的。
計算是通過變數計算來得出資料。而觀察是觀察一個特定的值,根據被觀察者的變動進行相應的變化,在特定的場景下不能相互混用,所以還是需要注意api運用的合理性和語義性。
相關推薦
vue中 methods、watch、computed之間的差別
一、計算屬性 當頁面中有某些資料依賴其他資料進行變動的時候,可以使用計算屬性。 <div id="app"> {{fullName}} </div>var vm = new Vue({ el: '#app', dat
Vue中的methods、watch、computed
看到這個標題就知道這篇文章接下來要講的內容,我們在使用vue的時候methods、watch、computed這三個特性一定經常使用,因為它們是非常的有用,但是沒有徹底的理解它們的區別和各自的使用場景,也很難用好它們,希望接下來的介紹為你答疑解惑。 computed 我們先來看計算屬性:computed,
vue中methods、computed、watch區別
span com 緩存 strong class -s spa 做事 str vue中methods、computed、watch區別methods:事件調用的鉤子 computed:{ // 計算屬性是根據他依賴的值計算的,當依賴值發生變化,其跟著改變
Vue中的methods、watch、computed的區別
看到這個標題就知道這篇文章接下來要講的內容,我們在使用vue的時候methods、watch、computed這三個特性一定經常使用,因為它們是非常的有用,但是沒有徹底的理解它們的區別和各自的使用場景,也很難用好它們,希望接下來的介紹為你答疑解惑。 computed 我們先來看計算屬
前端框架Vue中methods,computed,watch的呼叫時機的理解
最近在學Vue框架的 時候對methods,computed不甚理解,看了幾篇別人寫的部落格感覺描述的也很模糊,故而在稍微明白他們之間主要差異的時候,寫篇部落格記錄分享一下。 methods中定義的函式,其呼叫時機是:當頁面引用了vue data關鍵字的屬性,並且這些屬性發
Vue中父傳子、子傳父元件之間傳值
在Vue的框架開發的專案過程中,經常會用到元件來管理不同的功能,有一些公共的元件會被提取出來。這時必然會產生一些疑問和需求?比如一個元件呼叫另一個元件作為自己的子元件,那麼我們如何進行給子元件進行傳值呢。常見的就是父子元件,子父元件之間的傳值。父子元件的關係可以總結為 pro
vue.js基礎02--計算屬性(computed、watch、&watch)、過濾器、自定義元件(component、components)
1.vue例項中的計算屬性選項 計算屬性關鍵詞: computed。 在一個計算屬性裡可以完成各種複雜的邏輯,包括運算、函式呼叫等,只要最終返回一個結果就可以。 <body> <div id="example"> <p>Ori
vue中methods一個方法調用另外一個方法
img bsp 方法 調用 .com 9.png es2017 png http vue中methods一個方法調用另外一個方法
vue中methods互相呼叫的方法
a:function(goods) { this.aa= []; this.bb= 0; this.cc= 0; }, b:function(){ if(this.bbb!= 0){ this.aa= []; thi
Vue 中父元件和子元件之間獲取對方資料和方法
父元件獲取子元件的資料和方法 one 在父元件中呼叫子元件時,定義一個ref(其實和選擇器類似): <Common ref="commonChild" :pathologyId="form.pathologyId" /> 在父元件中獲取子元件屬性和方
vue中methods一個方法呼叫另外一個方法
vue在同一個元件內; methods中的一個方法呼叫methods中的另外一個方法 可以在呼叫的時候 this.$options.methods.test2(); this.$options.methods.test2();一個方法呼叫另外一個方法; new Vue({
Vue中methods相互呼叫
1.方法login必須在onSubmit之前定義 2.onSubmit方法之中,this.$options.methods必須在onSubmit方法下呼叫,不能放到 回撥方法裡面(//this.$o
在vue中通過使用$attrs實現元件之間的資料傳遞
元件之間傳遞資料的方式有很多種,之所以有這麼多種方式,是為了滿足在不同場景不同條件下的使用。 一般有三種方式: 通過
vue中的methods、computed和watch
1、computed屬性: 經過處理返回的資料值,只要源資料沒有發生改變,computed函式裡面對相應的資料就不會反生改變,相當於快取在本地;發生改變的時候,computed對應資料的函式才會發生改變。 2、computed屬性和methods屬性: 你可能已經注意到我們可以通過呼叫method來達到
Vue 中 computed、methods 和 watch 的區別
<template> <div> <p>使用computed {{ message }}</p> <p>使用methods {{ message() }}<
vue computed和 methods、 watch 區別(鄒文豐)
pre script 重新 lln reverse body utf 依賴 () <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <t
vue筆記之watch、computed、methods的對比
1.computed:computed屬性的結果會被快取,除非依賴的響應式屬性變化才會重新計算,主要當作屬性來使用; <div id="app"> <!-- 1.我們要監聽到文字框資料的改變,這樣才能知道什麼時候去拼接出一個fullnam
Vuejs中關於computed、methods、watch的區別。
Vue.js在模板表示式中限制了,繫結表示式最多隻能有一條表示式,但某些資料需要一條以上的表示式運算實現,此時就可以將此資料放在計算屬性(computed)當中。 Vuejs中關於computed、methods、watch的區別。 computed:計算屬性將被混入到 Vue 例項中。所有 get
vue : watch、computed、以及對象數組
origin ber this sub 改變 turn src gin 怎麽 watch和computed是vue框架中很重要的特性。 那麽,他們是怎麽作用於對象數組的? 今天我們就來探究一下。 上代碼。 <template> <d
vue : watch、computed、以及物件陣列
watch和computed是vue框架中很重要的特性。 那麼,他們是怎麼作用於物件陣列的? 今天我們就來探究一下。 上程式碼。 <template> <div class="hello"> {{ msg }} &l