Vue使用mixin分發(fā)組件的可復(fù)用功能
vue創(chuàng)建高階組件的實現(xiàn)不夠react優(yōu)雅,但那是vue和react的設(shè)計思想導(dǎo)致的。在react中一切都是函數(shù),而在vue中,組件最終都是函數(shù),但在開發(fā)時可以是JSON對象,而且每個vue組件要注意三個點:props、events和slots,就是這三個導(dǎo)致vue創(chuàng)建高階組件時要傳入相應(yīng)的屬性,較react要復(fù)雜。
vue官方推薦使用mixins來完成高階組件的功能,如果對vue實現(xiàn)高階組件有興趣的話推薦看[vue實現(xiàn)高階組件][1]
下面是vue官網(wǎng)使用mixins的例子:
// 定義一個混入對象 var myMixin = { created: function () { this.hello() }, methods: { hello: function () { console.log('hello from mixin!') } } } // 定義一個使用混入對象的組件 var Component = Vue.extend({ mixins: [myMixin] }) var component = new Component() // => "hello from mixin!"
每個vue組件有mixins屬性接收mixin數(shù)組,但由于mixin與組件,mixin與mixin之間存在屬性命名沖突的問題,vue解決這個的方式是:
1 數(shù)據(jù)對象在內(nèi)部會進(jìn)行遞歸合并,并在發(fā)生沖突時以組件數(shù)據(jù)優(yōu)先。
2 值為對象的選項,例如 methods、components 和 directives,將被合并為同一個對象。兩個對象鍵名沖突時,取組件對象的鍵值對。
3 Vue.extend()和new Vue()創(chuàng)建的組件,解決上述的命名沖突的方案是一樣的。
總結(jié)
以上所述是小編給大家介紹的Vue使用mixin分發(fā)組件的可復(fù)用功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!
相關(guān)文章
vue路由跳轉(zhuǎn)傳遞參數(shù)的方式總結(jié)
在本篇文章和里小編給各位總結(jié)了關(guān)于vue路由跳轉(zhuǎn)傳遞參數(shù)的三種方式以及相關(guān)代碼,需要的朋友們可以學(xué)習(xí)下。2020-05-05element自定義表單驗證上傳身份證正反面的實現(xiàn)
表單驗證在很多地方都可以用的到,本文主要介紹了element自定義表單驗證上傳身份證正反面的實現(xiàn),文中根據(jù)實例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03vue學(xué)習(xí)筆記之slot插槽基本用法實例分析
這篇文章主要介紹了vue學(xué)習(xí)筆記之slot插槽基本用法,結(jié)合實例形式分析了vue slot插槽基本使用方法與操作注意事項,需要的朋友可以參考下2020-02-02解決vue的 v-for 循環(huán)中圖片加載路徑問題
今天小編就為大家分享一篇解決vue的 v-for 循環(huán)中圖片加載路徑問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09vue使用高德地圖根據(jù)坐標(biāo)定位點的實現(xiàn)代碼
這篇文章主要介紹了vue使用高德地圖根據(jù)坐標(biāo)定位點的實現(xiàn)代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08