混入(mixin)是指将多个组件重复的、可共用的配置选项提取成一个混入对象,然后在这些组件中对这些配置选项进行重用。
局部混入
局部混入是指在组件或特定的Vue实例中引入通用的配置对象。
例如:
1/**
2 * mixin.js
3 * 混入配置对象
4 */
5
6// 组件中的配置选项基本上都能在 mixin 中使用
7export const mixin1 = {
8 methods: {
9 showName() {
10 alert(this.name)
11 }
12 },
13 mounted() {
14 console.log('Hello mixin1!');
15 },
16}
17
18export const mixin2 = {
19 data() {
20 return {
21 x: 100,
22 y: 200,
23 }
24 },
25 mounted() {
26 console.log('Hello mixin2!');
27 },
28}
1<!--
2 MySite.vue
3 -->
4<template>
5 <div>
6 <h2 @click="showName">网站名称:{{name}}</h2>
7 <h2>网站地址:{{url}}</h2>
8 </div>
9</template>
10
11<script>
12// 引入一个混合
13import { mixin1, mixin2 } from "../mixin";
14
15export default {
16 name: 'MySite',
17 data() {
18 return {
19 name: 'Linner\'s Blog',
20 url: 'blog.linner.asia',
21 x: 666, //
22 }
23 },
24 /**
25 * mixins 中相同的生命周期函数会以被注册的顺序执行
26 */
27 mixins: [mixin1, mixin2,],
28 /**
29 * 配置重复的生命周期函数,它们都会被Vue调用
30 * mixins 中的会先被调用
31 */
32 mounted() {
33 console.log('Hello MySite!');
34 },
35};
36</script>
全局混入
全局混入是指在Vue原型对象中引入通用配置对象,这个配置对象在全局生效,项目中所有的Vue实例和组件都会自动启用该配置。
全局混入使用的是Vue.mixin()方法。
例如:
1/**
2 * main.js
3 */
4
5import Vue from 'vue'
6import App from './App.vue'
7
8import { mixin1, mixin2 } from "./mixin";
9
10Vue.config.productionTip = false
11
12// 全局应用 mixin
13Vue.mixin(mixin1)
14Vue.mixin(mixin2)
15
16new Vue({
17 render: h => h(App),
18}).$mount('#app')
注意事项
使用mixin时需要注意:
- 组件中的配置选项基本上都能在
mixin中使用。 - 当混入对象和组件中的某些配置(例如
data、计算属性、methods)重复时,以组件中的配置为主。 - 当混入对象和组件中的生命周期函数重复时,它们都会被Vue调用,并且
mixins中的生命周期函数会先被Vue调用。 - 如果
mixins中存在相同的生命周期函数,Vue会按照mixin在组件mixins中被注册的顺序进行调用。
评论