vue mixins組件復(fù)用的幾種方式

  • 最近在做項(xiàng)目的時(shí)候家坎,研究了mixins嘱能,此功能有妙處。用的時(shí)候有這樣一個(gè)場景虱疏,頁面的風(fēng)格不同惹骂,但是執(zhí)行的方法,和需要的數(shù)據(jù)非常的相似做瞪。我們是否要寫兩種組件呢对粪?還是保留一個(gè)并且然后另個(gè)一并兼容另一個(gè)呢?

  • 不管以上那種方式都不是很合理装蓬,因?yàn)榻M件寫成2個(gè)著拭,不僅麻煩而且維護(hù)麻煩;第二種雖然做了兼容但是頁面邏輯造成混亂牍帚,必然不清晰儡遮;有沒有好的方法,有那就是用vue的混合插件mixins暗赶”杀遥混合在Vue是為了提出相似的數(shù)據(jù)和功能,使代碼易懂忆首,簡單爱榔、清晰。

1.場景

假設(shè)我們有幾個(gè)不同的組件糙及,它們的工作是切換狀態(tài)布爾详幽、模態(tài)和工具提示。這些提示和情態(tài)動詞不有很多共同點(diǎn)浸锨,除了功能:他們看起來不一樣唇聘,他們不習(xí)慣相同,但邏輯是相同的柱搜。

//彈框
const Modal = {
  template: '#modal',
  data() {
    return {
      isShowing: false
    }
  },
  methods: {
    toggleShow() {
      this.isShowing = !this.isShowing;
    }
  },
  components: {
    appChild: Child
  }
}

//提示框
const Tooltip = {
  template: '#tooltip',
  data() {
    return {
      isShowing: false
    }
  },
  methods: {
    toggleShow() {
      this.isShowing = !this.isShowing;
    }
  },
  components: {
    appChild: Child
  }
}

上面是一個(gè)彈框和提示框迟郎,如果考慮做2個(gè)組件,或者一個(gè)兼容另一個(gè)都不是合理方式聪蘸。請看一下代碼

const toggle = {
  data() {
    return {
      isShowing: false
    }
  },
  methods: {
    toggleShow() {
      this.isShowing = !this.isShowing;
    }
  }
}

const Modal = {
  template: '#modal',
  mixins: [toggle],
  components: {
    appChild: Child
  }
};

const Tooltip = {
  template: '#tooltip',
  mixins: [toggle],
  components: {
    appChild: Child
  }
};

用mixins引入toggle功能相似的js文件宪肖,進(jìn)行混合使用

2.可以合并生命周期

//mixin
const hi = {
  mounted() {
    console.log('this mixin!')
  }
}

//vue組件
new Vue({
  el: '#app',
  mixins: [hi],
  mounted() {
    console.log('this Vue instance!')
  }
});

//Output in console
> this  mixin!
> this Vue instance!

先輸出的是mixins的數(shù)據(jù)

3、可以全局混合(類似已filter)

Vue.mixin({
  mounted() {
    console.log('hello from mixin!')
  },
  method:{
     test:function(){
     }
    }
})

new Vue({
  el: '#app',
  mounted() {
    console.log('this Vue instance!')
  }
})

會在每一個(gè)組件中答應(yīng)周期中的log健爬,同時(shí)里面的方法控乾,類似于vue的prototype添加實(shí)例方法一樣。

var install = function (Vue, options) {
  // 1. 添加全局方法或?qū)傩?  Vue.myGlobalMethod = function () {
    // 邏輯...
  }
  // 2. 添加全局資源
  Vue.directive('my-directive', {
    bind (el, binding, vnode, oldVnode) {
      // 邏輯...
    }
    ...
  })
  // 3. 注入組件
  Vue.mixin({
    created: function () {
      // 邏輯...
    }
    ...
  })
  // 4. 添加實(shí)例方法
  Vue.prototype.$myMethod = function (options) {
    // 邏輯...
  }
}

有興趣的可以試試,若想了解更多請關(guān)注github賬號holidaying

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娜遵,一起剝皮案震驚了整個(gè)濱河市蜕衡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌设拟,老刑警劉巖慨仿,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件久脯,死亡現(xiàn)場離奇詭異,居然都是意外死亡镰吆,警方通過查閱死者的電腦和手機(jī)帘撰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鼎姊,“玉大人骡和,你說我怎么就攤上這事相赁∠嗫埽” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵钮科,是天一觀的道長唤衫。 經(jīng)常有香客問我,道長绵脯,這世上最難降的妖魔是什么佳励? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮蛆挫,結(jié)果婚禮上赃承,老公的妹妹穿的比我還像新娘。我一直安慰自己悴侵,他們只是感情好瞧剖,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著可免,像睡著了一般抓于。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浇借,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天捉撮,我揣著相機(jī)與錄音,去河邊找鬼妇垢。 笑死巾遭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闯估。 我是一名探鬼主播灼舍,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼睬愤!你這毒婦竟也來了片仿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤尤辱,失蹤者是張志新(化名)和其女友劉穎砂豌,沒想到半個(gè)月后厢岂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阳距,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年塔粒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筐摘。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卒茬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咖熟,到底是詐尸還是另有隱情圃酵,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布馍管,位于F島的核電站郭赐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏确沸。R本人自食惡果不足惜捌锭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罗捎。 院中可真熱鬧观谦,春花似錦、人聲如沸桨菜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雷激。三九已至替蔬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屎暇,已是汗流浹背承桥。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留根悼,地道東北人凶异。 一個(gè)月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像挤巡,于是被迫代替她去往敵國和親剩彬。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容