Vue使用mixin分發(fā)組件的可復(fù)用功能
vue創(chuàng)建高階組件的實(shí)現(xiàn)不夠react優(yōu)雅,但那是vue和react的設(shè)計(jì)思想導(dǎo)致的。在react中一切都是函數(shù),而在vue中,組件最終都是函數(shù),但在開(kāi)發(fā)時(shí)可以是JSON對(duì)象,而且每個(gè)vue組件要注意三個(gè)點(diǎn):props、events和slots,就是這三個(gè)導(dǎo)致vue創(chuàng)建高階組件時(shí)要傳入相應(yīng)的屬性,較react要復(fù)雜。
vue官方推薦使用mixins來(lái)完成高階組件的功能,如果對(duì)vue實(shí)現(xiàn)高階組件有興趣的話推薦看[vue實(shí)現(xiàn)高階組件][1]
下面是vue官網(wǎng)使用mixins的例子:
// 定義一個(gè)混入對(duì)象
var myMixin = {
created: function () {
this.hello()
},
methods: {
hello: function () {
console.log('hello from mixin!')
}
}
}
// 定義一個(gè)使用混入對(duì)象的組件
var Component = Vue.extend({
mixins: [myMixin]
})
var component = new Component() // => "hello from mixin!"
每個(gè)vue組件有mixins屬性接收mixin數(shù)組,但由于mixin與組件,mixin與mixin之間存在屬性命名沖突的問(wèn)題,vue解決這個(gè)的方式是:
1 數(shù)據(jù)對(duì)象在內(nèi)部會(huì)進(jìn)行遞歸合并,并在發(fā)生沖突時(shí)以組件數(shù)據(jù)優(yōu)先。
2 值為對(duì)象的選項(xiàng),例如 methods、components 和 directives,將被合并為同一個(gè)對(duì)象。兩個(gè)對(duì)象鍵名沖突時(shí),取組件對(duì)象的鍵值對(duì)。
3 Vue.extend()和new Vue()創(chuàng)建的組件,解決上述的命名沖突的方案是一樣的。
總結(jié)
以上所述是小編給大家介紹的Vue使用mixin分發(fā)組件的可復(fù)用功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
vue element upload實(shí)現(xiàn)圖片本地預(yù)覽
這篇文章主要為大家詳細(xì)介紹了vue element upload實(shí)現(xiàn)圖片本地預(yù)覽,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
Vue-cli集成axios請(qǐng)求出現(xiàn)CORS跨域問(wèn)題及解決
這篇文章主要介紹了Vue-cli集成axios請(qǐng)求出現(xiàn)CORS跨域問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,2023-10-10
Vue-cli中post請(qǐng)求發(fā)送Json格式數(shù)據(jù)方式
這篇文章主要介紹了Vue-cli中post請(qǐng)求發(fā)送Json格式數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
Vue中在data里面調(diào)用method方法的實(shí)現(xiàn)
這篇文章主要介紹了Vue中在data里面調(diào)用method方法的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
解決vue+router路由跳轉(zhuǎn)不起作用的一項(xiàng)原因
這篇文章主要介紹了解決vue+router路由跳轉(zhuǎn)不起作用的一項(xiàng)原因,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
vue高級(jí)組件之provide與inject使用及說(shuō)明
這篇文章主要介紹了vue高級(jí)組件之provide與inject使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04

