Vue中混入mixin的用法介紹
什麼是混入?
混入通過註入配置項到vue實例用來提升復用性
基礎使用
const myMixin = { created: function () { this.hello(); }, methods: { hello: function () { console.log('hello from mixin'); }, }, }; var vm = new Vue({ el: '#app', mixins: [myMixin], });
選項合並
選項合並發生在下面兩種情況
- mixins接收的是一個數組,mixin中的屬性沖突時會發生合並
- mixin屬性和組件原有屬性沖突時
const myMixin = { created: function () { this.hello(); }, methods: { hello: function () { console.log('hello from mixin'); }, }, }; var vm = new Vue({ el: '#app', mixins: [myMixin], created: function () { this.hello(); }, methods: { hello: function () { console.log('hello from vue instance'); }, }, });
上述兩種的選項合並規則是相同的:
- 周期鉤子沖突的時候,會合並成數組都保留,執行順序是先執行minxi的鉤子,再執行組件上的鉤子
- methods、computed這類值為對象的選項在沖突的時候以組件屬性為準
自定義合並規則
除瞭使用上述默認的合並規則,還可以通過Vue.config.optionMergeStrategies自定義合並規則。
Vue.config.optionMergeStrategies.myMixin=(toVal, fromVal){ //返回合並的值 };
通常對於值為對象的屬性我們可以借用已有的合並規則
//借用methods的規則 Vue.config.optionMergeStrategies.myMixin=Vue.config.optionMergeStrategies.methods;
全局混入
混入也可以全局註冊,使用時候要格外小心,它會影響到每一個組件/實例
Vue.mixin({ created: function () { console.log('mixin created'); }, }); var vm1 = new Vue(...); var vm2 = new Vue(...);
總結
- mixin混入通過註入配置項到vue實例提升復用性
- 屬性沖突時以組件內的屬性為準,聲明周期的鉤子會保留多個
到此這篇關於Vue中混入mixin的用法介紹的文章就介紹到這瞭,更多相關Vue mixin內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- None Found