vue中mixin和元件的區別是什麼

2022-12-13 22:01:13

mixin和元件的區別:元件在參照之後相當於在父元件內開闢了一塊單獨的空間,來根據父元件props過來的值進行相應的操作,單本質上兩者還是涇渭分明,相對獨立;而mixins在引入元件之後相當於父元件的各種屬性方法都被擴充了,會將元件內部的內容如data等方法、method等屬性與父元件相應內容進行合併。

前端(vue)入門到精通課程,老師線上輔導:聯絡老師
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:

本教學操作環境:windows7系統、vue3版,DELL G3電腦。

什麼是Mixin?

混合 (mixins) 是一種分發 Vue 元件中可複用功能的非常靈活的方式。

混合物件可以包含任意元件選項。

當元件使用混合物件時,所有混合物件的選項將被混入該元件本身的選項。【相關推薦:、】

mixin和元件的區別

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

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

單純元件參照:

  • 父元件 + 子元件 >>> 父元件 + 子元件

mixins:

  • 父元件 + 子元件 >>> new父元件

有點像註冊了一個vue的公共方法,可以繫結在多個元件或者多個Vue物件範例中使用。另一點,類似於在原型物件中註冊方法,範例物件即元件或者Vue範例物件中,仍然可以定義相同函數名的方法進行覆蓋,有點像子類和父類別的感覺。

mixins和vuex區別

Mixins:可以定義共用的變數,在每個元件中使用,引入元件中之後,各個變數是相互獨立的,值的修改在元件中不會相互影響。如果相同物件,元件會覆蓋mixins

vuex:用來做狀態管理的,裡面定義的變數在每個元件中均可以使用和修改,在任一元件中修改此變數的值之後,其他元件中此變數的值也會隨之修改。

mixins的使用

1、首先建立一個js檔案,例如elTableAdsorbent.js

export const elTableAdsorbent = {
  data() {
    return {
      count:10
    }
  },
  methods: {
    // 顯示頁面中所有內容
    handleCount() {
      this.count++
  }
}
登入後複製

或者

// 定義一個混入物件
    var myMixin = {
        data(){
            return{
                parent: 405
            }
        },
        mounted: function () {
            this.hello()
        },
        methods: {
            hello: function () {
                console.log(this.parent, 'hello from mixin!')
            }
        }
    }
登入後複製

2、然後在需要此需求的vue頁面引入並且使用

<el-button type="primary" @click="handleCount">{{count}}</el-button>
 
import { elTableAdsorbent } from '@/utils/mixin/elTableAdsorbent'
 
export default {
  mixins: [elTableAdsorbent],
  data() {
    return {}
  },
  created(){},
  methods:{}, 
  watch:{}
}
登入後複製

3、同名勾點函數將合併為一個陣列,因此都將被呼叫。另外,混入物件的勾點將在元件自身勾點之前呼叫。

var mixin = {
  created: function () {
    console.log('混入物件的勾點被呼叫')
  }
}

new Vue({
  mixins: [mixin],
  created: function () {
    console.log('元件勾點被呼叫')
  }
})

// => "混入物件的勾點被呼叫"
// => "元件勾點被呼叫"
登入後複製

4、兩個物件鍵名衝突時,取元件物件的鍵值對。

var mixin = {
  methods: {
    conflicting: function () {
      console.log('from mixin')
    }
  }
}

var vm = new Vue({
  mixins: [mixin],
  methods: {
    conflicting: function () {
      console.log('from self')
    }
  }
})
vm.conflicting() // => "from self"
登入後複製

mixins的應用

var install = function (Vue, options) {
  // 1. 新增全域性方法或屬性
  Vue.myGlobalMethod = function () {
    // 邏輯...
  }
  // 2. 新增全域性資源
  Vue.directive('my-directive', {
    bind (el, binding, vnode, oldVnode) {
      // 邏輯...
    }
    ...
  })
  // 3. 注入元件
  Vue.mixin({
    created: function () {
      // 邏輯...
    }
    ...
  })
  // 4. 新增實體方法
  Vue.prototype.$myMethod = function (options) {
    // 邏輯...
  }
}
登入後複製

(學習視訊分享:、)

以上就是vue中mixin和元件的區別是什麼的詳細內容,更多請關注TW511.COM其它相關文章!