vue創建高階組件的實現不夠react優雅,但那是vue和react的設計思想導致的。在react中一切都是函數,而在vue中,組件最終都是函數,但在開發時可以是JSON對象,而且每個vue組件要注意三個點:props、events和slots,就是這三個導致vue創建高階組件時要傳入相應的屬性,較react要復雜。
vue官方推薦使用mixins來完成高階組件的功能,如果對vue實現高階組件有興趣的話推薦看[vue實現高階組件][1]
下面是vue官網使用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數組,但由于mixin與組件,mixin與mixin之間存在屬性命名沖突的問題,vue解決這個的方式是:
1 數據對象在內部會進行遞歸合并,并在發生沖突時以組件數據優先。
2 值為對象的選項,例如 methods、components 和 directives,將被合并為同一個對象。兩個對象鍵名沖突時,取組件對象的鍵值對。
3 Vue.extend()和new Vue()創建的組件,解決上述的命名沖突的方案是一樣的。
總結
以上所述是小編給大家介紹的Vue使用mixin分發組件的可復用功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com