Vue 混入是一種重復使用 Vue 組件和代碼的方法,以便在多個組件中重復使用
Vue mixin 可以定義一些功能并添加到多個組件中,從而減少了在多個組件中編寫相同的代碼的重復性。Vue mixin 是一種全局定義,可以在 Vue 的實例中使用,不需要在每個組件中重新定義。
定義一個 Vue mixin 很簡單,在 Vue 中提供了 mixins 選項。這個選項是一個數組,可以用來定義多個 mixin。例子如下:
Vue.mixin({ created() { console.log('global mixin - created hook') } })
在上面這個例子中,創建了一個全局的 mixin,它將在每個組件創建時調用 created 鉤子。
除了全局的 mixin 之外,你還可以定義局部的 mixin,定義局部 mixin 的方法很像定義全局 mixin。局部 mixin 只會被添加到當前組件。如下所示:
var mixin = { created() { console.log('local mixin - created hook') } } new Vue({ mixins: [mixin] })
在上面這個例子中,定義了一個局部 mixin,并將它添加到當前組件的 mixins 選項中。
當存在全局 mixin 和局部 mixin 時,局部 mixin 優先于全局 mixin。
除了 created 鉤子外,混入還可以在任何鉤子中包含 Vue 生命周期的鉤子,如 mounted、updated、beforeCreate 和 beforeDestroy。如下所示:
var mixin = { mounted() { console.log('local mixin - mounted hook') } } new Vue({ mixins: [mixin], mounted() { console.log('instance - mounted hook') } })
在上面這個例子中,定義了一個局部 mixin,并添加到當前組件的 mixins 選項中。此外,還在當前組件定義了 mounted 鉤子。由于局部 mixin 的優先級高于全局 mixin,所以會先執行局部 mixin 的 mounted 鉤子,然后再執行當前組件的 mounted 鉤子。
另外需要注意一點的是,如果 mixin 和組件具有相同的選項,組件的選項將覆蓋 mixin 的選項。