Mixin混入
# Mixin混入
# 作用
可以将多个组件公用的配置提取成一个混入对象,用来分发Vue
组件中的可复用的功能。
在引入组件(js文件)之后,将组件内部的内容如data等方法、method等属性与父组件相应内容进行合并,相当于在引入后,父组件的各种属性方法都被扩充了。
提示
定义共用的变量,引入组件中之后,与原组件发生冲突时(变量名相同时),以原组件数据优先(选择原组件的变量或属性,混入不破坏原有组件只是扩充)。
不过生命周期方法,mounted除外,当都存在时,效果为叠加。
# 本质
mixin本质就是一个JS对象,可以包含组件中的任意功能选项,如data、components、methods、creaded、computed以及生命周期函数等等,当组件使用mixins对象时所有mixins对象的对象都将被混入该组件本身的选项中来。
使用方法:
- 定义混合
- 使用混合
# 快速使用
以下是一个简单的例子:
// 定义一个混入对象
export const myMixin = {
data() {
return {
message: 'Hello mixin!'
};
},
methods: {
sayHello() {
console.log(this.message);
}
}
};
2
3
4
5
6
7
8
9
10
11
12
13
14
在组件中使用通过在options中指定mixins属性,将混入对象应用到组件中
mixins:[xx,....]
<template>
....
</template>
<script>
import {myMinxin} from ‘../mx’;
export default {
name:'Demo',
dataL(){
return{
name:'san'
}
},
mixins:[myMinxin],
created() {
this.sayHello(); // 输出 "Hello mixin!"
}
</script>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
在上面的例子中,定义了一个名为myMixin的混入对象,它包含了一个data属性和一个methods对象。data属性定义了一个名为message的共享数据,methods对象包含了一个名为sayHello的方法,
在Vue组件中,可以通过在options中指定mixins属性,将混入对象应用到组件中。并在created钩子函数中,调用了sayHello方法,输出了共享数据。
# 混入类型
vue中的混入分为局部混入和全局混入。 局部混入是指通过在组件选项中添加mixins属性,将混入对象作为参数传入;全局混入则需要通过Vue.mixin()方法进行注册
# 局部混入
上文中的例子就是局部混入。
# 全局混入
在使用全局混入时要格外小心!一旦使用全局混入,它将影响每一个之后创建的 Vue 实例 (包括第三方组件)。
import .....
// 全局混入
Vue.mixin(myMixin);
2
3
更多详细讲解请善用官网+搜索