前言:一直在看vue代碼,對于vue的選項(xiàng)/數(shù)據(jù)一直不是很理解〖徘海現(xiàn)在進(jìn)行簡單的總結(jié)下(官方解釋很好怎诫,進(jìn)行歸納)。
data
Vue實(shí)例的數(shù)據(jù)對象贷痪。Vue將會遞歸將data的屬性轉(zhuǎn)換為getter/setter幻妓,從而讓data的屬性能夠響應(yīng)數(shù)據(jù)變化。data必須只能是數(shù)據(jù)劫拢。實(shí)例創(chuàng)建之后肉津,可以通過vm.data.a
props
props可以使數(shù)組或?qū)ο竺蒙常糜诮邮諄碜愿附M件的數(shù)據(jù)偶洋。porps可以使簡單的數(shù)組,或者使用對象作為代替初烘,對象允許配置高級選項(xiàng)涡真,如類型檢測、自定義驗(yàn)證和設(shè)置默認(rèn)值肾筐。
示例:
Vue.component('props-demo-simple', {
props: ['size', 'myMessage']
})
// 對象語法哆料,提供驗(yàn)證
Vue.component('props-demo-advanced', {
props: {
// 檢測類型
height: Number,
// 檢測類型 + 其他驗(yàn)證
age: {
type: Number,
default: 0,
required: true,
validator: function (value) {
return value >= 0
}
}
}
})
props寫在子組件之中,里面存放的是父組件傳遞過來的數(shù)據(jù)吗铐。在父組件中东亦,通過import導(dǎo)入子組件進(jìn)行使用,在<子組件名 v-bind:子組件props中的屬性="父組件中的數(shù)據(jù)">唬渗。這樣子組件中props中的屬性就得到了父組件傳遞過來的數(shù)據(jù)典阵。
Vuex與props和data的區(qū)別:
Vuex是為了保存組件之間共享數(shù)據(jù)而誕生的,如果組件之間有共享的數(shù)據(jù)镊逝,可以直接掛載到Vuex中壮啊,而不必通過父子組件之間傳值了,如果組件的數(shù)據(jù)不需要共享撑蒜,此時(shí)歹啼,這些不需要共享的私有數(shù)據(jù),沒有必要放到vuex中座菠;
1)只有共享的數(shù)據(jù)狸眼,才有權(quán)利放到Vuex中;
2)組件內(nèi)部私有的數(shù)據(jù)浴滴,只要放倒組件的data中即可拓萌;
3)Vuex是一個(gè)全局的共享數(shù)據(jù)存儲區(qū)域,相當(dāng)于一個(gè)數(shù)據(jù)的倉庫
computed
計(jì)算屬性將混入到Vue實(shí)例中升略。所有g(shù)etter和setter的this上下文自動地綁定Vue實(shí)例微王。計(jì)算屬性的結(jié)果會被緩存,除非依賴的響應(yīng)式屬性變化才會重新計(jì)算品嚣。
methods
methods將被混入到Vue實(shí)例中骂远。可以直接通過VM實(shí)例訪問這些方法腰根,或者在指令表達(dá)式中使用。方法中的this自動綁定為Vue實(shí)例拓型。
watch
一個(gè)對象额嘿,鍵是需要觀察的表達(dá)式瘸恼,值是對應(yīng)回調(diào)函數(shù)。值也可以使方法名册养,或者包含選項(xiàng)的對象东帅。Vue實(shí)例將會在實(shí)例化時(shí)調(diào)用$watch(),遍歷watch對象的每一個(gè)屬性球拦。
computed 與 methods 的區(qū)別
1.computed定義的方法我們是以屬性訪問的形式調(diào)用的靠闭。computed依賴于data中的數(shù)據(jù),只有在它的相關(guān)依賴數(shù)據(jù)發(fā)生改變時(shí)才會重新求值坎炼。
2.methods定義的方法是以函數(shù)的形式調(diào)用的愧膀。
computed 與 watch 的區(qū)別
1.computed特性:
1.1是計(jì)算值,
1.2應(yīng)用:簡化tempalte里面{{}}計(jì)算和處理props或$emit的傳值
1.3具有緩存性:頁面重新渲染值不變化谣光,計(jì)算屬性會立即返回之前的計(jì)算結(jié)果檩淋,而不必再次執(zhí)行函數(shù)
2.watch特性:
2.1是觀察動作
2.2應(yīng)用:監(jiān)聽props和emit或本組件的值執(zhí)行異步操作
2.3無緩存性:頁面重新渲染時(shí)值不變化也會執(zhí)行