Vue mixins 混入

混入是一種分發(fā)式組件可復(fù)用功能

分為混入對象 和使用混入對象的組件

// 定義一個(gè)混入對象
var myMixin = {
  created: function () {
    this.hello()
  },
  methods: {
    hello: function () {
      console.log('hello from mixin!')
    }
  }
}

// 定義一個(gè)使用混入對象的組件
var Component = Vue.extend({
  mixins: [myMixin]
})

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

組件在created鉤子執(zhí)行時(shí)執(zhí)行了myMixin里面的函數(shù),說明混入對象已經(jīng)成功混入組件中,合二為一了。

關(guān)鍵使用方法:

mixins: [myMixin]

注意事項(xiàng)

組件和混入對象含有同名選項(xiàng)
1.數(shù)據(jù)對象會在內(nèi)部進(jìn)行遞歸合并,如果由同名沖突以組件數(shù)據(jù)優(yōu)先

`var mixin = {
  data: function () {
    return {
      message: 'hello',
      foo: 'abc'
    }
  }
}

new Vue({
  mixins: [mixin],
  data: function () {
    return {
      message: 'goodbye',
      bar: 'def'
    }
  },
  created: function () {
    console.log(this.$data)
    // => { message: "goodbye", foo: "abc", bar: "def" }
  }
})

可以看到created鉤子函數(shù)輸出的data包含message,foo, bar,其中沖突的message的值是罪行的‘goodbye’

2.同名鉤子函數(shù)將混合成一個(gè)數(shù)組,都將被調(diào)用?;烊雽ο筱^子函數(shù)的優(yōu)先級高于混入的組件的鉤子函數(shù)

3.值為對象的選項(xiàng),如methods,components,和directives,將被混合為同一個(gè)對象。如果對象鍵名沖突時(shí),取組件對象的鍵值對

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容