这篇文章主要介绍了vue中混入mixin的应用实例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
混入(混合)提供了一种非常灵活的方式,来分vue组发件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。
即混合在引入组件之后,会将组件内部的内容如数据、方法等属性与父组件相应内容进行合并。相当于在引入后,父组件的各种属性方法都被扩充了。
比如在两个不同的组件的组件中调用sayHi方法,需要重复定义,倘若方法比较复杂,代码将更加冗余,但使用mixin就相对比较简单了。
首先在mixin。js文件中定义一个混入对象:
let mixin =, { data 才能;(),{ ,,,return { ,,,,,用户名:,& # 39;mixin # 39; ,,,} ,,}, created 才能;(),{ ,,,this.sayHello () ,,}, 方法:才能,{ ,,,sayHello (), { ,,,,,console.log (“$ {this.userName},,欢迎”) ,,,} ,,} } export default  mixin
然后定义两个组件,分别在组件中引入:
& lt; script> ,,,import mixin 得到& # 39;. ./mixin # 39; ,,,export default { ,,,,,mixin:,(混合) ,,,} & lt;/script>
则两个组件的打印结果都为:
如果在两个组件数据中定义了各自的用户名,则打印结果会引用各自组件中的用户名
如果在两个组件的方法中重复定义了相同的方法,则mixin中的方法会被覆盖
给其中一个组件定义自己的用户名和sayHi方法:
& lt; script> ,,,import mixin 得到& # 39;. ./mixin # 39; ,,,export default { ,,,,,mixin:,(混合) ,,,,,数据(),{ ,,,,,,,return { ,,,,,,,,,用户名:,& # 39;BComponent& # 39; ,,,,,,,} ,,,,,}, ,,,,,created (), { ,,,,,,,,,this.sayHello () ,,,,,}, ,,,,,方法:,{ ,,,,,,,sayHello (), { ,,,,,,,,,console.log(“嗨,,$ {this.userName}”) ,,,,,,,} ,,,,,} ,,,} & lt;/script>
则打印结果:
这有点像注册了一个vue公共方法,可以在多个组件中使用。还有一点类似于在原型对象中注册方法,并且可以定义相同函数名的方法进行覆盖。
混入也可以进行全局注册,但一般情况下不会全局使用,因为会污染vue实例。
我一般在项目中会这样用,比如在多个组件中有用到通用选择器,选项是:是,否,可以使用混合来添加一个统一的字典项过滤器,来实现选项的回显。
1。首先创建一个字典。js文件,用于保存字典项对应的含义,并将其暴露出去:
export const COMMON_SELECT =, ( ,,,{,代码:0,,标签:,& # 39;是& # 39;}, ,,,{,代码:1,标签:,& # 39;否& # 39;} ];
注:此处创建的字典。js文件,也可以在页面渲染的时候拿来循环选项,具体代码如下:
import {, COMMON_SELECT },得到& # 39;. ./常量/Dictionary.js& # 39; export default  { ,,,的数据(),{ ,,,,,,,return { ,,,,,,,,,,,comSelectOptions: COMMON_SELECT ,,,,,,,} ,,,} } & lt; select v型=皊elStatus"祝辞 ,,,& lt; el-option v=癷tem comSelectOptions",拷贝:关键=癷tem.code",:标签=癷tem.label",: value=https://www.yisu.com/zixun/" item.code "> 选择>
2。然后再创建一个过滤器。js文件,保存自定义的过滤函数:
import {, COMMON_SELECT },得到& # 39;. ./常量/Dictionary.js& # 39; export default  { ,,过滤器:{ ,,,comSelectFilter:,(值),=祝辞,{ ,,,,,const target =, COMMON_SELECT.filter (item =祝辞,{ ,,,,,,,return item.code ===,价值 ,,,,,}) ,,,,,return target.length ?,目标[0].label :价值 ,,,} ,,} }
3。最后在主。js中一次性引入过滤方法:
import filter 得到& # 39;。/混合/过滤器# 39; Vue.mixin(过滤器)vue中混入mixin的应用实例