一个混入对象可以包含任意组件选项(如data、methods、created、mounted等等)。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。 我们可以使用混入,向组件注入自定义的行为。 和组件注册和指令一样 vue 提供了全局和局部注册mixin的mixin 函数。
1、局部注册mixin
//mixin.js
let mixin = {
  created() {
    console.log("mixin created");
    this.sayHello();
  },
  methods: {
    sayHello() {
      console.log("mixin hello");
    }
  }
};
export default mixin;
 
//Home.vue
<template>
  <div>Home</div>
</template>
<script>
import myMixin from "../mixin.js";
export default {
  name: "home",
  mixins: [myMixin],
  created() {
    console.log("home created");
    this.sayHello();
  },
  methods: {
    sayHello() {
      console.log("home hello");
    }
  }
};
</script>
 
同名钩子函数将合并为一个数组,混入对象的钩子将在组件自身钩子之前调用。
混入对象和组件对象二者的 methods、components 和 directives,将被合并为同一个对象。若对象键名冲突时,取组件对象的键值对。

2、全局注册mixin
//main.js
import mixin from './mixins';
Vue.mixin(mixin) 
注意:应谨慎地使用vue.mixin这种混入方式,因为全局注册一个混入,影响注册之后所有创建的每个 Vue 实例。



















