Vue學習筆記之混入 mixin

2021-10-02 06:09:43 字數 1956 閱讀 6758

目錄

選項合併

全域性混入

自定義選項合併策略

混入(mixin)提供了一種非常靈活的方式,來分發vue元件的可復用功能。乙個混入物件可以包含任意元件選項。當元件使用混入物件時,所有混入物件的選項將被「混合」進入該元件本身的選項。

//定義乙個混入的物件

var mymixin =,

methods:

}}// 定義乙個使用混入物件的元件

var component = vue.extend()

var component = new component() // => "hello from mixin!"

當元件和混入物件含有同名選項時,這些選項將以恰當的方式進行「合併」。

比如,資料物件在內部會進行遞迴合併,並在發生衝突時以元件資料優先。

var mixin = 

}}new vue(

},created: function ()

}})

同名鉤子函式將合併為乙個陣列,因此都將被呼叫。另外,混入物件的鉤子將在元件鉤子之前被呼叫

var mixin = 

}new vue(

})// => "混入物件的鉤子被呼叫"

// => "元件鉤子被呼叫"

值為物件的選項,例如methods、compontents和directives,將被合併為同乙個物件。兩個物件鍵名衝突時,取元件物件的鍵值對。

var mixin = ,

conflicting: function ()

}}var vm = new vue(,

conflicting: function ()

}})vm.foo() // => "foo"

vm.bar() // => "bar"

vm.conflicting() // => "from self"

注意:vue.extend()也使用同樣的策略進行合併。

混入也可以進行全域性註冊。使用時格外小心!一旦使用全域性混入,它將影響每乙個之後建立的 vue 例項。使用恰當時,這可以用來為自定義選項注入處理邏輯。

// 為自定義的選項 'myoption' 注入乙個處理器。

vue.mixin(

}})new vue()

// => "hello!"

請謹慎使用全域性混入,因為它會影響每個單獨建立的 vue 例項 (包括第三方元件)。大多數情況下,只應當應用於自定義選項,就像上面示例一樣。推薦將其作為外掛程式發布,以避免重複應用混入。

自定義選項將使用預設策略,即簡單地覆蓋已有值。如果想讓自定義選項以自定義邏輯合併,可以向vue.config.optionmergestrategies新增乙個函式:

vue.config.optionmergestrategies.myoption = function (toval, fromval)
對於多數值為物件的選項,可以使用與methods相同的合併策略:

var strategies = vue.config.optionmergestrategies

strategies.myoption = strategies.methods

可以在 vuex 1.x 的混入策略裡找到乙個更高階的例子:

const merge = vue.config.optionmergestrategies.computed

vue.config.optionmergestrategies.vuex = function (toval, fromval)

}

vue系列 混入(mixin)

一 混入的理解 1 混入 mixin 就是乙個vue物件,你可以認為,混入是把每個vue元件的公共部分的內容抽取出來了。即提高了 的復用性。2 假設每個vue元件裡的都有同樣的函式testf,而且完成的功能是一模一樣的,怎麼辦,不能像原生js那樣單獨封裝個函式吧,肯定不行,那這就是混入 mixin ...

vue中mixin 混入 的學習

混入 mixin 提供了一種非常靈活的方式,來分發 vue 元件中的可復用功能。乙個混入物件可以包含任意元件選項。當元件使用混入物件時,所有混入物件的選項將被 混合 進入該元件本身的選項。index.vue index mixin.js export default created methods ...

應用三 Vue之混入 mixin 與全域性混入

注 本文適用於有一定vue基礎或開發經驗的讀者,文章就知識點的講解不一定全面,但卻是開發過程中很實用的 首先介紹一下混入mixin的概念 官方文件 混入提供了一種非常靈活的方式,來分發 vue 元件中的可復用功能。乙個混入物件可以包含任意元件選項。當元件使用混入物件時,所有混入物件的選項將被 混合 ...