Vue中使用mixins混入方式

 更新时间:2024年08月28日 10:28:23   作者:前端大斗师  
这篇文章主要介绍了Vue中使用mixins混入方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mixins在Vue中的用法

一、mixins混入

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

vue提供的一种混合机制,能够更好的实现组件功能复用,混合对象(mixins)可以包含任意组件选项(data、created、mounted、methods、filters等),组件引入后相关选项会进行合并,相当于引入后,父组件各属性进行扩充;

二、组件和mixins的区别

组件在引用之后相当于在父组件内开辟了一块单独的空间,来根据父组件props过来的值进行相应的操作,本质上两者还是泾渭分明,相对独立。

mixins则是在引入组件之后,是将组件内部的内容如data等方法、method等属性与父组件相应内容进行合并。相当于在引入后,父组件的各种属性方法都被扩充。

简单理解:减少代码冗余,提高开发效率,复用组件数据,方法等,以提高开发速度

三、为什么使用mixins

  • mixins分为全局混入和局部混入,下面我们着重讲局部混入
  • 注意不同组件混入之后,会生成不同的实例,数据会相互隔离,互不影响
  • 注意在引入mixins的同时,组件中重复定义,minxins中的属性方法会被覆盖
  • 使用 mixins 之后,该组件包含 mixins 中的所有数据,并且可以使用 this 进行访问。 您也可以使用变量而不是单独的文件来定义 mixins

四、Vue项目实际使用

  • 新建src/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')

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解如何在Vue项目中发送jsonp请求

    详解如何在Vue项目中发送jsonp请求

    这篇文章主要介绍了详解如何在Vue项目中发送jsonp请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • vue实现tab切换的3种方式及切换保持数据状态

    vue实现tab切换的3种方式及切换保持数据状态

    这篇文章主要给大家介绍了关于vue实现tab切换的3种方式及切换保持数据状态的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • vue实现自定义"模态弹窗"组件实例代码

    vue实现自定义"模态弹窗"组件实例代码

    页面中会有很多时候需要弹窗提示,我们可以写一个弹窗组件,下面这篇文章主要给大家介绍了关于vue实现自定义"模态弹窗"组件的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2021-12-12
  • Vue.js仿Select下拉框效果

    Vue.js仿Select下拉框效果

    这篇文章主要为大家详细介绍了Vue.js仿 Select下拉框效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • vue 使用ref 让父组件调用子组件的方法

    vue 使用ref 让父组件调用子组件的方法

    这篇文章主要介绍了vue 使用ref 让父组件调用子组件的方法,需要的朋友可以参考下
    2018-02-02
  • 基于Vue实现后台系统权限控制的示例代码

    基于Vue实现后台系统权限控制的示例代码

    本篇文章主要介绍了基于Vue实现后台系统权限控制的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • vue使用axios时关于this的指向问题详解

    vue使用axios时关于this的指向问题详解

    最近在学习使用vue+axios,在使用中发现了一个问题,下面总结分享给大家,这篇文章主要给大家介绍了关于vue使用axios时this的指向问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-12-12
  • 快速处理vue渲染前的显示问题

    快速处理vue渲染前的显示问题

    下面小编就为大家分享一篇快速处理vue渲染前的显示问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Vue实现购物小球抛物线的方法实例

    Vue实现购物小球抛物线的方法实例

    这篇文章主要给大家介绍了Vue实现购物小球抛物线的方法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • vue项目中如何通过cdn引入资源并配置详解

    vue项目中如何通过cdn引入资源并配置详解

    生产环境中将项目依赖的一些第三方包替换成通过cdn方式外部加载,而不是打包到 vender,对于提升应用的加载、响应速度很有意义,下面这篇文章主要给大家介绍了关于vue项目中如何通过cdn引入资源并配置的相关资料,需要的朋友可以参考下
    2022-06-06

最新评论