data
new vue({
data:{
'a':1
}
}) 是一個實例,data直接是一個對象
vue.component('my',{
template:'',
props:['title'],
data: function() {
return {
'a':1 }
}
}) 是組件注冊,data 返回一個函數。組件是一個相對獨立的個體,如果data直接是一個對象的話,一個組件被多次使用時,屬性會相互影響。所以使用一個有返回值的函數來解決這個問題。
prop
Prop 是你可以在組件上注冊的一些自定義特性。當一個值傳遞給一個 prop 特性的時候,它就變成了那個組件實例的一個屬性。每次父級組件發生更新時,子組件中所有的 prop 都將會刷新為最新的值。但子組件傳值不能直接傳給父組件,要在子組件的method中利用$emit('父組件中on監聽的方法',值)自定義一個事件,並在父組件中引入子組件時,設置v-on:方法='方法',並在method中設置方法:function(值){}函數接收值。
詳細內容:https://www.cnblogs.com/sxgxiaoge/p/9453306.html
watch和computed
兩者都是監聽vue屬性,但是computed屬性中需要一個返回值,而且代碼是同步執行,而watch則不需要,代碼也可以是異步的。
computed: { fullName: { get: function(){ return this.firstName +this.lastName }, set: function (newValue) { var names = newValue.split(' ') this.firstName = names[0] this.lastName = names[names.length - 1] } } }, watch: { search: function(){ setTimeout(function(){ console.log(11); },200); } }
計算屬性中這兩個方法是固定的(get是默認的,可以自己加set),在調用和設置對應的值的時候會調用對應的函數。
computed 和 methods watch區別
描述
vue 中computed 和methods 在使用效果來看可以說是一樣的,但是深入看還是不一樣的。區別就在於: computed 依賴緩存, methods 卻不是。怎么理解呢?當Dom每次需要渲染computed的值,這個值已經處於緩存之中,不需要再重復的經歷一遍計算過程,只有當computed依賴的數據變量發生變化,這個計算屬性會自動更新,不需要渲染觸發。methods 的值被獲取的時候就會每次都會重新經歷一遍計算過程。
所以由此可以看出,computed和methods 的應用場景 和 計算過程的復雜程度有關, 如果計算過程復雜龐雜,而且計算屬性會被經常調用(getter),那么最好使用緩存;如果,需要的值,計算簡單,調用不頻繁,實時性比較高(存在異步請求),會比較適合methods
computed有緩存,若相關數據未發生變化,則不調用;
methods無緩存,需要事件才能調用它(如點擊等);
watch多用於數據交互頻繁的內容。(例如定時axios從服務器獲取數據)。
