混入(mixins)提供了一种非常灵活的方式,来分发vue组件中的可服用功能。一个混入对象可以包含任意的组件选项(vue在script的部分)。当组件使用混入对象时,所有混入对象的选项都将被“混合”进入改组件本身的选项。
vue提供的一种混合机制,能够更好的实现组件功能复用,混合对象(mixins)可以包含任意组件选项(data、created、mounted、methods、filters等),组件引入后相关选项会进行合并,相当于引入后,父组件各属性进行扩充;
组件在引用之后相当于在父组件内开辟了一块单独的空间,来根据父组件props过来的值进行相应的操作,本质上两者还是泾渭分明,相对独立。
mixins则是在引入组件之后,是将组件内部的内容如data等方法、method等属性与父组件相应内容进行合并。相当于在引入后,父组件的各种属性方法都被扩充。
简单理解:减少代码冗余,提高开发效率,复用组件数据,方法等,以提高开发速度
this
进行访问。 您也可以使用变量而不是单独的文件来定义 mixinssrc/minxins/index.js
// 引入下载文件接口 import { downTemplateFile } from '@/api/home' // 导出 myMixins 函数 export const myMixins = { data() { return { } }, methods: { // 下载方法,参数传文件ID toLogin(id) { downTemplateFile({ id1: id }).then(res => { if (res.size != 97) { let blob = new Blob([res]) let objectUrl = window.URL.createObjectURL(blob) if (navigator.msSaveBlob) { return navigator.msSaveBlo(blob, '下载文件.doc') } else { let a = document.createElement('a') document.body.appendChild(a); a.style.display = 'none' a.setAttribute('href', objectUrl) a.setAttribute('download', '下载文件.doc') a.click(); URL.revokeObjectURL(objectUrl); } } else { this.$message.error('系统错误,请稍后重试!') } }) } } }
index.vue
引入注册并使用mixins<template> <div class="index"> <button @click="downLoadTempFile(1)">触发mixins下载方法</button> </div> </template> <script> // 引入 myMixins 函数,导出什么就引入什么 import { myMixins } from '@/mixins'; export default { data(){ return { } }, // 注册 mixins: [myMixins], methods:{ async downLoadTempFile(id){ // 直接使用this.方法名就可以调用到myMixins里的方法 this.toLogin(id) }, } } </script>
main.js
import Vue from 'vue' import App from './App.vue' import { myMixins } from "@/mixins" Vue.mixin(myMixins); Vue.config.productionTip = false new Vue({ render: h => h(App), }).$mount('#app')
以上为个人经验,希望对您有所帮助。