您好,登錄后才能下訂單哦!
小編給大家分享一下vue中混入指的是什么,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
定義:混入是一種分發Vue組件中可復用功能非常靈活的方式。混入對象可以包含任意組件選項。當組件使用混入對象時,所有混入對象的選項將被混入該組件本身的選項。
例子:
//定義一個混入對象 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
選項合并
當組件和混入對象含有同名選項時,這些選項將以恰當的方式混合。
比如,數據對象在內部會進行遞歸合并,在和組件的數據發生沖突時以組件數據優先。
var mixin ={ data:function(){ return{ messageL:'hello', foo:'abc' } }, created(){ console.log('混入對象的鉤子被調用') } } new Vue({ mixins:[mixin], data:function(){ return{ message:'goodbye', bar:'def } }, created:function(){ console.log('組件鉤子被調用') console.log(this.$data); // => { message: "goodbye", foo: "abc", bar: "def" } } })
值為對象的選項,例如methods,components和directives,將被混合為同一個對象。兩個對象鍵名沖突時,取組件對象的鍵值對。
var mixin={ methods:{ foo:function(){ console.log('foo') }, conflicting:function(){ console.log('from mixin') } } } var vm = new Vue({ mixins:[mixin], methods:{ bar:function(){ console.log('bar') }, conflicting:function(){ console.log('from self') } } }) vm.foo()//foo vm.bar()//bar vm.conflicting()//form self
全局混入
也可以全局注冊混入對象。注意使用!一旦使用全局混入對象,將會影響到所有之后創建的Vue實例。使用恰當時,可以為自定義對象注入處理邏輯。
//為自定義的選項myOption注入一個處理器。 Vue.mixin({ creted:function(){ var myOption = this.$options.myOption; if(myOption){ console.log(myOption) } } }) new Vue({ myOption:'hello' })
謹慎使用全局混入對象,因為會影響到每個單獨創建Vue實例(包括第三方模板)。大多數情況下,只應當應用于自定義選項,就像上面示例一樣。也可以將其用作Plugins以避免產生重復作用。
自定義選項合并策略
自定義選項將使用默認策略,即簡單的覆蓋已有值。如果想讓自定義選項以自定義邏輯合并,可以向Vue.config.optionMergeStrategies添加一個函數:
Vue.config.optionMergeStrategies.myOption=function(toVal,fromVal){ return mergedVal }
對于大多數對象選項,可以使用methods的合并策略:
var strategies = Vue.config.optionMergeStrategies; strategies.myOption = strategies.methods
看完了這篇文章,相信你對vue中混入指的是什么有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。