Vue中mixins的使用方法详解

 更新时间:2024年03月15日 08:51:54   作者:代码搬运媛  
mixins是一种分发 Vue 组件中可复用功能的使用方式,它是一个 js 对象,包含我们组件script中的任意功能选项,下面就跟随小编一起来看看它的具体使用吧

1 什么是mixins

它是一种分发 Vue 组件中可复用功能的使用方式,mixins 是一个 js 对象,包含我们组件script中的任意功能选项,如:data、components、methods、created、computed 等等。我们只要将公用的功能以对象的方式传入 mixins 选项中,当组件使用 mixins 对象,所有 mixins 对象的选项都将被扩展到该组件本身的选项中,提高代码的重用性,易于代码维护。

当多个组件中的数据或功能很相近时,可以通过 mixins 将公共部分提取出来,进行封装。

2 创建并使用 mixins

在 src 文件夹创建 mixins 文件夹,在文件夹下创建一个 js 文件,在这个 js 对象中可以定义 data、components、methods、created、computed 等属性,并通过 export 导出该对象。

在需要调用的组件中引入 mixins 文件即可。

3 注意事项

(1)方法和参数在不同组件中不共享

即其他组件无法从当前组件中获取 mixins 中的数据和方法,很好的做到了数据隔离的效果。

// 在 myMixins.js 中定义一个 age 字段和 getAge 方法,用来获取年龄信息
export const myMixins = {
  data() {
    return {
      age: 18,
    }
  },
  mounted() {
    this.getAge()
  },
  methods: {
    getAge() {
      console.log(this.age)
    }
  }
}
// 在第一个组件中引入 mixins,并且对 age 加1 
import { myMixins } from "@/mixins/myMixins.js";
export default {
  mixins: [myMixins],
  data() {
    return {}
  },
  created() {
    this.age++
  },
}
// 发现控制台输出 19,说明当前组件的 age 变化了 

(2)合并冲突

当 mixins 的值为对象(components、methods 、computed、data),混入到某个组件中时,选项会被合并。当对象名称冲突时优先组件,组件中的值会覆盖混入对象的。

// myMixins.js
export const myMixins = {
  components:{},
  data() {
    return {}
  },
  created() {
    console.log('data from mixins')
  }
}
// 组件中引入 mixins
import { myMixins } from "@/mixins/myMixins.js";
export default {
  mixins: [myMixins],
  data() {
    return {}
  },
  created() {
    console.log('data from template')
  }
}
// 先输出混入对象的值,再输入组件的值
// data from mixins
// data from template

(3)异步请求

当混入里面包含异步请求函数,而我们又需要在组件中使用异步请求函数的返回值时,我们会取不到此返回值,解决方案是:不要返回结果,而是直接返回异步函数

// myMixins.js 中直接返回异步函数
export const myMixins = {
  components:{},
  data() {
    return {
      num: 1,
    }
  },
  methods: {
   async getDate1() {
      let result = await new Promise((resolve,reject) => {
          let a = 1;
          setTimeout(() => {
            resolve(1)
          },500)
       })
       return result
    },
  }
}
// 组件中获取混入的异步函数,通过then 方法获取函数值。
import { myMixins } from "./myMixins.js";
export default {
  mixins: [myMixins],
  data() {
    return {}
  },
  mounted() {
    this.getDate1().then(res => {
      console.log(res)
    })
  }
}

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

相关文章

  • vue前端代码如何通过maven打成jar包运行

    vue前端代码如何通过maven打成jar包运行

    这篇文章主要介绍了vue前端代码如何通过maven打成jar包运行问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • vue引用外部JS并调用JS文件中的方法实例

    vue引用外部JS并调用JS文件中的方法实例

    我们在做vue项目时,经常会需要引入js,下面这篇文章主要给大家介绍了关于vue引用外部JS并调用JS文件中的方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • 详解Vue2.0配置mint-ui踩过的那些坑

    详解Vue2.0配置mint-ui踩过的那些坑

    这篇文章主要介绍了详解Vue2.0配置mint-ui踩过的那些坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • vue2前端导出pdf文件实例demo

    vue2前端导出pdf文件实例demo

    在Vue应用中,将页面导出为PDF文件通常涉及到前端技术的组合,下面这篇文章主要给大家介绍了关于vue2前端导出pdf文件的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09
  • 实现一个Vue版Upload组件

    实现一个Vue版Upload组件

    这篇文章主要介绍了实现一个Vue版Upload组件,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • vue components 动态组件详解

    vue components 动态组件详解

    这篇文章主要介绍了vue components 动态组件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11
  • Vue中component标签解决项目组件化操作

    Vue中component标签解决项目组件化操作

    这篇文章主要介绍了Vue中component标签解决项目组件化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • vue 判断元素内容是否超过宽度的方式

    vue 判断元素内容是否超过宽度的方式

    这篇文章主要介绍了vue 判断元素内容是否超过宽度的方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 详解Vue+elementUI build打包部署后字体图标丢失问题

    详解Vue+elementUI build打包部署后字体图标丢失问题

    这篇文章主要介绍了详解Vue+elementUI build打包部署后字体图标丢失问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • vue3+ts使用bus事件总线的示例代码

    vue3+ts使用bus事件总线的示例代码

    这篇文章主要介绍了vue3+ts使用bus事件总线,文中给大家提到了vue总线机制(bus)的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08

最新评论