----Vue 中mixin 的用法详解----

摘要:
让我谈谈我对Vue中mixin的理解。Vue提供了一种混合机制——mixins,用于实现组件内容的更高效重用。让我们来看看mixin和一般介绍的组件之间的区别?在引入组件之后,mixin将组件的内部内容(如数据和其他方法、方法和其他属性)与父组件的相应内容合并。两个钩子函数都将被调用,mixin中的钩子将首先被执行。接下来,我们将介绍vuemixin的用法,如下:1。定义js文件?

说下我对vue中mixin的一点理解

  vue中提供了一种混合机制--mixins,用来更高效的实现组件内容的复用。最开始我一度认为这个和组件好像没啥区别。。后来发现错了。下面我们来看看mixins和普通情况下引入组件有什么区别?

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

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

     单纯组件引用:

          父组件 + 子组件 >>> 父组件 + 子组件

     mixins:

          父组件 + 子组件 >>> new父组件

作用:多个组件可以共享数据和方法,在使用mixin的组件中引入后,mixin中的方法和属性也就并入到该组件中,可以直接使用。钩子函数会两个都被调用,mixin中的钩子首先执行。

下面给大家介绍vue mixin的用法,具体介绍如下所示:

1.定义一个 js 文件(mixin.js)

1
2
3
4
5
6
7
8
9
10
11
12
export default {
 data() {
  return {
   name: 'mixin'
  }
 },
 created() {
  console.log('mixin...'this.name);
 },
 mounted() {},
 methods: {}
}

关于用法,vue文档中有详细的介绍,这里只介绍怎么在一个vue文件中使用mixin。

2.在vue文件中使用mixin

1
2
3
4
import '@/mixin'// 引入mixin文件
export default {
 mixins: [mixin]
}

接下来记录一下我在项目中使用mixin的具体例子:

首先我们来看一下项目中的需求:

----Vue 中mixin 的用法详解----第1张

----Vue 中mixin 的用法详解----第2张

大家从图可以看出来,有两个模块的内容差不多一样,但又有区别。有些人会说既然都差不多为什么不抽出来直接整成一个公共组件呢?不是不可以,但为了以后的维护,万一产品整了个一个模块单独有的呢?这样不方便以后的代码维护。所以我使用了mixin。还有一点,后台提供的接口最好是同一个根据不同的类型去拿不同模块的数据,这样方便简单,下面贴代码:

1.mixin文件中:

----Vue 中mixin 的用法详解----第3张

----Vue 中mixin 的用法详解----第4张

2.组件中:

----Vue 中mixin 的用法详解----第5张

免责声明:文章转载自《----Vue 中mixin 的用法详解----》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue 2.0 及 vue 3.0 rem配置黑马android下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

@font-face在vue中的使用

在项目中使用指定字体应该是正常操作了。可以使用css3新增的font-face这个属性来搞事情 在vue项目中如何使用,额,我写了以下几种方式:  在这之前要说下写上面的代码时碰到的问题 format('truetype') 我之前也是网上复制粘贴,被误导写成了 format('ttf') 发现字体不生效,然后把format这个标识符去掉,发现又生效了。...

ant design vue级联选择懒加载省市区三级数据

项目中原先是展示的一级数据,后面根据需求改成精确到县的。 使用Cascader级联选择,后台返回的是获取省份的字典接口,根据codeValue一级级查询进行动态加载。   <a-form-model-item prop="projectArea" ref...

vue-highlightjs的使用小结

万能的github真主,让我们强大!在vue的项目中想使用highlight.js这样的代码高亮?有人帮助我们实现了vue-highlightjs 安装 yarn add highlight.js -Dyarn add vue-highlight.js -D 这里解释一下为什么要安装两个依赖:vue-highlight.js只是实现了代码高亮的功能,他的...

Vue通过build打包后 打开index.html页面是空白的

最近在build打包vue项目遇到了几个问题,如下: 1、npm run build打包项目之后,我们通常是把dist文件里面被压缩后的static文件跟index.html提交到服务器,但最近发现直接打开index.html页面是空白的,还会报几个错,找不到页面路径。 原因:找到config文件下index.js,全局搜索assetsPublicPath...

vue element UI el-table 单元格中超出字省略号显示

filters: {     formatLongText(value) {     if(value===undefined||value===null||value===''){     return '暂无';     }else if(value.length>8){      return value.substr(0, 8...

Vue 监听---&amp;gt;watch

关于Vue的监听:watch watch是对单个属性的监听 对于基本数据类型的监听       简单监视 对于复杂数据类型的监听       深度监视 下面的代码,有一个简单监视  和 一个深度监视 <body> <div id="app"> <input type="text" v-model='ms...