Vue中mixins混入的介绍与使用详解

 更新时间:2022年12月23日 16:36:13   作者:娇花*  
如果我们在每个组件中去重复定义这些属性和方法会使得项目出现代码冗余并提高了维护难度,针对这种情况官方提供了Mixins特性,这时使用Vue mixins混入有很大好处,下面就介绍下Vue mixins混入使用方法,需要的朋友参考下吧

一、来自官网的描述

混入 (mixins): 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。

二、如何创建Mixins

在src目录下创建一个mixins文件夹,文件夹下新建一个myMixins.js文件。前面我们说了mixins是一个js对象,所以应该以对象的形式来定义myMixins,在对象中我们可以和vue组件一样来定义我们的data、components、methods 、created、computed等属性,并通过export导出该对象

export const myMixins = {
components:{},
data(){
return {}
},
created(){},
mounted(){},
computed(){},
methods: {}
}

三、项目中如何使用混入

在vue组件内,如果想将一些公共功能,如组件、方法、钩子函数等复用,混入是一个很好的选择。下面简单介绍一下混入的方式及特点。

你可以将一个对象作为混入的选项,在组件中复用。因为vue实例也是对象,所以你可以将vue实例作为混入选项传递进去。

我们可以创建一个目录mixins,在创建一个comment.js文件如图:

1.定义混入对象

common.js 就是我们要混入其它组件的内容:

export default {
	data(){
	return {
      msg: 'erwerwe',
      form:{
        a:'aaa'
      }
    }
	},
	filters: { //过滤器
		numToString(value) {
			return value.toString();
		}
	},
	created(){ //钩子函数
		    console.log('这是混入的组件')
	},
	computed: {   //计算属性
		ids() {
				return  !this.loading
			 }
	},
	methods:{
     exm(){
      console.log('这是混入的exm方法')
      },
     clickFn(){
      console.log(this.msg)
    },
	// 其它属性方法......
		}
}

2.定义使用混入的组件

test.vue组件用mixins把common.js内容混入当前组件

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <h1>{{ form.a }}</h1>
    <button @click="buttonClick">current</button>
  </div>
</template>
<script>
//导入js文件
import fun from './mixins/common.js'
export default {
  name: "HelloWorld",
  mixins:[fun],  //混入 fnu对象
  created(){
    console.log('这是当前组件')
  },
  data() {
    return {
      msg: "组件的msg"
    }
  },
  methods:{
    buttonClick(){
      console.log(this.form.a)
      console.log(this.msg)
      this.clickFn();
      this.exm();
    },
    exm(){
      console.log('这是组件的exm方法')
    }
  }
}
</script>

3.存在的问题:

混入的对象中的msg属性,和组件的msg属性冲突,以组件的值优先。组件中没有的属性,混入对象中的生效。

同名钩子函数将会合并成一个数组,都会调用,混入函数先调用

值为对象的选项,如methods,components,directives等,将会合并为一个新对象,如果键名冲突,组件的值优先

四、与vuex的区别

vuex:用来做状态管理的,里面定义的变量在每个组件中均可以使用和修改,在任一组件中修改此变量的值之后,其他组件中此变量的值也会随之修改。

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

五、与公共组件的区别

组件:在父组件中引入组件,相当于在父组件中给出一片独立的空间供子组件使用,然后根据props来传值,但本质上两者是相对独立的。

Mixins:则是在引入组件之后与组件中的对象和方法进行合并,相当于扩展了父组件的对象与方法,可以理解为形成了一个新的组件。

到此这篇关于Vue中mixins混入的介绍与使用详解的文章就介绍到这了,更多相关Vue mixins混入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用 Vue 绑定单个或多个 Class 名的实例代码

    使用 Vue 绑定单个或多个 Class 名的实例代码

    这篇文章主要介绍了使用 Vue 绑定单个或多个 Class 名的实例代码,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2018-01-01
  • Vue+ElementUI 封装简易PaginationSelect组件的详细步骤

    Vue+ElementUI 封装简易PaginationSelect组件的详细步骤

    这篇文章主要介绍了Vue+ElementUI 封装简易PaginationSelect组件,这里简单介绍封装的一个Pagination-Select组件几个步骤,结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • vue中v-model和响应式的实现原理解析

    vue中v-model和响应式的实现原理解析

    这篇文章主要介绍了vue中v-model和响应式的实现原理,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Vue集成TinyMCE富文本编辑器的流程步骤

    Vue集成TinyMCE富文本编辑器的流程步骤

    TinyMCE 是一款功能强大的富文本编辑器,广泛应用于各种 Web 应用中,本文将详细介绍如何在 Vue 项目中集成 TinyMCE,通过详尽的步骤说明、示例代码展示以及丰富的配置选项,助力开发者轻松实现内容编辑的增强与美化,需要的朋友可以参考下
    2024-11-11
  • Vue实现简易记事本功能

    Vue实现简易记事本功能

    这篇文章主要为大家详细介绍了Vue实现简易记事本功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • vue实现百度搜索功能

    vue实现百度搜索功能

    这篇文章主要为大家详细介绍了vue实现百度搜索功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • vue3.0响应式函数原理详细

    vue3.0响应式函数原理详细

    这篇文章主要介绍了vue3.0响应式函数原理,Vue3的响应式系统可以监听动态添加的属性还可以监听属性的删除操作,以及数组的索引以及length属性的修改操作。另外Vue3的响应式系统还可以作为模块单独使用。下面更多介绍,需要的小伙伴可以才可以参考一下
    2022-02-02
  • Vue根据条件添加click事件的方式

    Vue根据条件添加click事件的方式

    今天小编就为大家分享一篇Vue根据条件添加click事件的方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Vue中使用md5进行数据加密的实现方法

    Vue中使用md5进行数据加密的实现方法

    在现代Web开发中,数据安全是一个不可忽视的重要环节,Vue.js作为一个流行的前端框架,不仅提供了强大的数据绑定和组件化功能,还支持与各种后端服务的集成,本文将探讨如何在Vue应用中使用MD5算法来加密数据,从而提升应用的安全性,需要的朋友可以参考下
    2024-10-10
  • 解决el-tree节点过滤不显示下级的问题

    解决el-tree节点过滤不显示下级的问题

    这篇文章主要介绍了解决el-tree节点过滤不显示下级的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04

最新评论