理解vue中mixin,以及使用mixin的注意点

mixin在vue官方文档中是这么解释的:

混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。

mixin为我们提供了两种混入方式:局部混入和全局混入

具体怎么用?

我们就以局部混入(也就是只有引入了mixin的混入对象才可以使用,并且只有在引入了mixin混入对象的组件中才生效)举个例子

定义一个混入对象
在这里插入图片描述
把混入对象混入到组件中
在这里插入图片描述
控制台打印结果
在这里插入图片描述
mixin的特点

  1. 方法和参数在各组件中不共享

混合对象中的参数num
在这里插入图片描述

组件1中的参数num进行+1的操作
在这里插入图片描述
打印结果
在这里插入图片描述

组件2中的参数num不进行操作
在这里插入图片描述
打印结果
在这里插入图片描述

大家可以看到,我在组件1里改变了num里面的值,组件2中的num值还是混入对象里的初始值

  1. 值为对象的选项,如methods,components等,选项会被合并,键冲突的组件会覆盖混入对象的

混入对象中的方法test()在这里插入图片描述
组件中的方法test()
在这里插入图片描述
当我在组件中调用这个重复的方法时
在这里插入图片描述
打印结果
在这里插入图片描述
可以看到mixin里的test方法被组件里的test方法覆盖了

  1. 值为函数的选项,如created,mounted等,就会被合并调用,混合对象里的钩子函数在组件里的钩子函数之前调用

混入对象函数中的console
在这里插入图片描述
组件函数中的console
在这里插入图片描述
打印结果
在这里插入图片描述

看了上面的例子,大家应该会很容易理解了吧!

总结:mixin可以定义共用的变量,在每个组件中使用,引入组件中之后,各个变量是相互独立的,值的修改在组件中不会相互影响。