vue中的mixin

mixins是一种混合机制,用来更高效的实现组件内容的复用。
组件在引用之后相当于在父组件内开辟了一块单独的空间,来根据父组件props过来的值进行相应的操作,本质上两者还是泾渭分明,性对独立的。而mixins则是在引入组件之后,则是将组件内部的内容如data等方法method等属性与父组件相应的内容进行合并。相当于在引入后,父组件的各种属性方法都被扩充了。
单纯的组件引用:
父组件 + 子组件 >>> 父组件+子组件
mixins:
父组件 + 子组件 >>> new父组件
作用:多个组件可以共享数据和方法,在使用mixin的组件中引入后,mixin中的方法和属性也就并入到该组件中,可以直接使用。钩子函数会两个都被调用,mixin中的钩子首先执行。
minxin的使用:定义一个js文件

export const myMixin = {
data() {
return {
num:1
}
},
created() {
console.log('mixin....',this.num);
},
mounted() {

},
methods:{

}
}

用法可以看vue文档介绍,虽然我看不懂
在vue文件中使用mixin

import {myMixin} from '@/mixin.js';  //引入mixin文件
export default {
mixins: [myMixin]
}

mixins的特点:
1.方法和参数在各组件中不共享
混合对象中的参数num,假如在组件1中使用mixin,然后对num进行+1操作,对组件2中的参数num不进行操作,两个组件中的num值互不影响。
2.值为对象的选项,如methods,components等,选项会被合并,键冲突的组件会覆盖混入对象的
与vuex的区别:
vuex:用来做状态管理的,里面定义的变量在每个组件中均可以使用和修改,在任一组件中修改此变量的值之后,其他组件中此变量的值也会随之修改。
Mixins:可以定义公用的变量,在每个组件中使用,引入组件中之后,各个变量是相互独立的,值的修改在组件中不会相互影响。
与公共组件的区别:
公共组件: 在父组件中引入组件,相当于在父组件中给出一片独立的空间供子组件使用,然后根据props来传值,但本质上两者是相对独立的。
mixins:在引入组件之后与组件中的对象和方法进行合并,相当于扩展了父组件的对象与方法,可以理解为形成了一个新的组件。
需要注意的是当混合里面包含异步请求函数,而我们又需要在组件中使用异步请求函数的返回值时,我们会取不到此返回值。
解决方案是我们在mixin中不要反悔结果,而是直接返回异步函数
例如:

mixin中:
methods:{
    async func1(){
    let result = await new Promise((resolve,reject) =>{
     setTimeout(()=> {
     resolve(1)
  },800)
  })
    return result;
  },
}

在组件中调用

export default {
mixins:[myMixin],
mounted(){
this.func1().then(res => {
console.log(res);
})
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值