mixin的常见场景中混入了两个相似的组件。它们的基本功能是相同的,但之前它们之间存在差异。正常的思路是:是拆分成两个不同的组件,还是保留为一个组件,通过props传递?两种解决方案都不是完美的:如果拆分成两个组件,一旦功能发生变化,就必须冒着更新两个文件中代码的风险,并且如果通过props传值很快就会变得混乱,迫使维护人员在使用组件时要了解一大段上下文,拖慢编写代码的速度和使用mixin,vue中的mixin对于编写函数式风格的代码非常有用,因为函数式编程是通过更少的移动部分让代码更容易理解。Mixins允许你封装一段函数,可以被应用程序的其他组件使用,如果使用得当,它们不会改变函数范围之外的任何东西。基础实例我们有一对不同的组件,它们的作用是通过切换状态来显示或隐藏模态框或提示框。这些提示框和模态框除了功能相似外,没有任何共同之处。它们看起来不一样,用法也不一样,但是逻辑是一样的~~~~//ModalboxconstModal={template:'#modal',data(){return{isShowing:false}},methods:{toggleShow(){this.isShowing=!this.isShowing;}},components:{appChild:Child}}//提示框constTooltip={template:'#tooltip',data(){return{isShowing:false}},methods:{toggleShow(){this.isShowing=!this.isShowing;}},components:{appChild:Child}}我们可以在这里提取逻辑并创建可以重复使用的项目consttoggle={data(){return{isShowing:false}},methods:{toggleShow(){this.isShowing=!this.isShowing;}}}constModal={template:'#modal',mixins:[toggle],components:{appChild:Child}};constTooltip={template:'#tooltip',mixins:[toggle],components:{appChild:Child}};使用方法可以在项目中新建一个mixin目录,创建一个js文件,文件中需要输出一个对象。在modal.vue文件中导入这个mixin
