淺析vue混入(mixin)

混入 (mixin) 提供了一種很是靈活的方式,來分發 Vue 組件中的可複用功能。一個混入對象能夠包含任意組件選項。當組件使用混入對象時,全部混入對象的選項將被「混合」進入該組件自己的選項。vue

這句話咱們能夠理解爲在js代碼中定義一個混入對象,裏面能夠包含一個組件能夠有的任何組件選項:data、method、watch、鉤子函數等,使用的話,分爲局部混入和全局混入。markdown

首先新建一個mixin.js文件,添加如下代碼。app

// 混入
export default {
    data() {
        return {
            msg: "Hello Word!"
        };
    },
    created() {},
    computed: {},
    methods: {
        show() {
            console.log(this.msg);
        }
    }
};

這個文件格式應該比較眼熟,一個.vue文件包含template、script、style三個部分,mixin.js這個文件很像script這個部分。對的,script裏的data、method、watch、鉤子函數等,均可以定義到mixin.js這個文件。那這裏面可能就會存在問題,好比mixin.js中的data、method等和引用混入的組件中存在衝突,這時採用組件內部優先。ide

局部混入函數

<template>
  <div id="myVue">
    <span @click="show">{{msg}}</span>
  </div>
</template>
<script>
import myMixin from "./mixin.js";
export default {
  name: "myVue",
  mixins: [myMixin],
  created() {
    console.log("組件自身的鉤子函數");
  },
};
</script>

首先咱們引入mixin.js,而後就能夠調用混入的方法和數據this

全局混入spa

在main.js中引入該文件並使用mixin方法進行註冊code

import Vue from 'vue';
import App from './App';

// 增長混入
import myMixin from "@/mixin";
Vue.mixin(myMixin);

new Vue({
  el: '#app',
  components: { App },
  template: '<App/>'
});

全局註冊後,在任意組件均可以使用,謹慎使用全局混入對象,由於會影響到每一個單首創建的 Vue 實例 (包括第三方模板)。component

相關文章
相關標籤/搜索