這篇文章帶給大家的內容是關於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
這篇文章到這裡就已經全部結束了,更多其他精彩內容可以關注PHP中文網的JavaScript影片教學欄位!
以上是vue混入的相關操作介紹(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!