【Vue】Mixin相关问题解析

0 前言

本文将回答三个问题:是什么、为什么、注意点。
即Mixin是什么怎么用,为什么要用它什么时候用,其他应当注意的问题。

1 是什么

Mixin是什么?
Mixin就是“混入”、“混合”,是一个对象,在组件中使用,可以将一部分对象选项“混入”到另一个对象中,从而实现可复用。

如下代码:

//Student.vue
<template>
	<div>
		<h2 @click="showName">学生姓名:{{name}}</h2>
	</div>
</template>

<script>
	import {hunhe} from '../mixin'
	export default {
		name:'Student',
		data() {
			return {
				name:'张三',
			}
		},
		mixins:[hunhe]
	}
</script>
//mixin.js
export const hunhe = {
	methods: {
		showName(){
			alert(this.name)
		}
	},
	data() {
		return {
			x:100,
			y:200
		}
	},
	mounted() {
		console.log('你好啊!')
	},
}

即可实现把mixin.js中的代码“混入”到Student.vue中去了。
显而易见的是,mixin可以混入data、methods也能混入生命周期函数。

2 为什么

为什么要用Mixin?
其实在是什么中也提到了,mixin是一种常用的、简单的可以提高组件可复用的方式,它在Vue2、Vue3中都可以使用。
当两个组件的数据、方法、钩子函数相似的时候,就可以使用Mixin来降低重复代码。
它的优点在于简单,所以可以常用。
它的缺点在于简单,所以无法实现复杂的代码复用,比如需要根据传入参数的不同来复用不同的代码的场景下,实现起来就比较困难不够优雅。
并且Mixin在冲突的处理方式和引入的处理方式上也有一些需要注意的点,详见下文。

3 注意点

  1. 关于冲突。

     - 代码执行过程中,Mixin是先引入与执行的。
     - data(property)冲突:Mixin先引入执行,组件内data后执行,会覆盖Mixin引入的内容。
     - methods/components/directives(对象)冲突:同上,以组件内为准。
     - 生命周期钩子冲突:保留两者,Mixin先执行,组件内后执行。
    
  2. 关于使用。

     - 可以组件内引入Mixin
     - 可以全局Mixin(极不推荐,会影响每一个创建的组件)
     - 可以自定义选项合并策略(请看官方文档)
    
  3. 使用场景。

     - 主要场景,上文“为什么”已经提及了。
     - 在Vue2中Mixin还是经常被使用的,但是受限于其本身的简单性以及容易出现冲突,所以在Vue3中并不十分推荐。
     - 因为Vue3中有组合式API(Composition Api)。
     - 在Vue3官方文档中,依然保留了Mixin(不像Filter直接被删除了),但文档也推荐使用Composition Api。
    

4 参考资料

官方文档 Mixin
尚硅谷Vue2.0+Vue3.0(Mixin)

5 扩展阅读

【Vue】Vue2,Vue3 学习笔记
【Vue】过滤器Filter
【Vue】Mixin相关问题解析
【Vue】初识Composition Api
【Vue】defineProperty与数据代理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值