----Vue 中mixin 的用法詳解----


說下我對vue中mixin的一點理解

  vue中提供了一種混合機制--mixins,用來更高效的實現組件內容的復用。最開始我一度認為這個和組件好像沒啥區別。。后來發現錯了。下面我們來看看mixins和普通情況下引入組件有什么區別?

     組件在引用之后相當於在父組件內開辟了一塊單獨的空間,來根據父組件props過來的值進行相應的操作,單本質上兩者還是涇渭分明,相對獨立。

     而mixins則是在引入組件之后,則是將組件內部的內容如data等方法、method等屬性與父組件相應內容進行合並。相當於在引入后,父組件的各種屬性方法都被擴充了。

     單純組件引用:

          父組件 + 子組件 >>> 父組件 + 子組件

     mixins:

          父組件 + 子組件 >>> new父組件

作用:多個組件可以共享數據和方法,在使用mixin的組件中引入后,mixin中的方法和屬性也就並入到該組件中,可以直接使用。鈎子函數會兩個都被調用,mixin中的鈎子首先執行。

下面給大家介紹vue mixin的用法,具體介紹如下所示:

1.定義一個 js 文件(mixin.js)

?
1
2
3
4
5
6
7
8
9
10
11
12
export  default  {
  data() {
   return  {
    name:  'mixin'
   }
  },
  created() {
   console.log( 'mixin...' this .name);
  },
  mounted() {},
  methods: {}
}

關於用法,vue文檔中有詳細的介紹,這里只介紹怎么在一個vue文件中使用mixin。

2.在vue文件中使用mixin

?
1
2
3
4
import  '@/mixin' // 引入mixin文件
export  default  {
  mixins: [mixin]
}

接下來記錄一下我在項目中使用mixin的具體例子:

首先我們來看一下項目中的需求:

大家從圖可以看出來,有兩個模塊的內容差不多一樣,但又有區別。有些人會說既然都差不多為什么不抽出來直接整成一個公共組件呢?不是不可以,但為了以后的維護,萬一產品整了個一個模塊單獨有的呢?這樣不方便以后的代碼維護。所以我使用了mixin。還有一點,后台提供的接口最好是同一個根據不同的類型去拿不同模塊的數據,這樣方便簡單,下面貼代碼:

1.mixin文件中:

2.組件中:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM