• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

讨论vue中混入mixin的应用

vue 搞代码 4年前 (2022-01-08) 18次浏览 已收录 0个评论

这篇文章主要介绍了vue中混入mixin的理解和应用,对vue感兴趣的同学,可以参考下

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

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

比如在两个不同的组件的组件中调用sayHi方法,需要重复定义,倘若方法比较复杂,代码将更加冗余,但使用mixins 就相对比较简单了。

首先在 mixin.js 文件中定义一个混入对象:

 let mixin = { data () { return { userName: 'mixin' } }, created () { this.sayHello() }, methods: { sayHello () { console.log(`${this.userName}, welcome`) } } } export default mixin

然后定义两个组件,分别在组件中引入:

 

则两个组件的打印结果都为:

如果在两个组件 data 中定义了各自的 userName,则打印结果会引用各自组件中的 userName

如果在两个组件的 methods 中重复定义了相同的方法,则 mixin 中的方法会被覆盖

给其中一个组件定义自己的 userName 和 sayHi 方法:

 

则打印结果:

这有点像注册了一个 vue 公共方法,可以在多个组件中使用。还有一点类似于在原型对象中注册方法,并且可以定义相同函数名的方法进行覆盖。

混入也可以进行全局注册,但一般情况下不会全局使用,因为会污染 vue 实例。

我一般在项目中会这样用,比如在多个组件中有用到通用选择器,选项是:是,否,可以使用 mixin 来添加一个统一的字典项过滤器,来实现选项的回显。

1. 首先创建一个 Dictionary.js 文件,用于保存字典项对应的含义,并将其暴露出去:

 export const COMMON_SELECT = [ { code: 0, label: '是'}, { code: 1, label: '否'} ];

注:此处创建的 Dictionary.js 文件,也可以在页面渲染的时候拿来循本文来源[email protected]搞@^&代*@码2网环选项,具体代码如下:

 import { COMMON_SELECT } from '../constants/Dictionary.js' export default { data() { return { comSelectOptions: COMMON_SELECT } } }  

2.然后再创建一个 filter.js 文件,保存自定义的过滤函数:

 import { COMMON_SELECT } from '../constants/Dictionary.js' export default { filters: { comSelectFilter: (value) => { const target = COMMON_SELECT.filter(item => { return item.code === value }) return target.length ? target[0].label : value } } }

3.最后在 main.js 中一次性引入 filter 方法:

 import filter from './mixin/filter' Vue.mixin(filter)

欧了,这样我们就可以在任一组件中随意使用了

  <div> .... {{ status | comSelectFilter }} .... </div>

以上就是讨论vue中混入mixin的应用的详细内容,更多关于vue中混入mixin的应用的资料请关注gaodaima搞代码网其它相关文章!

以上就是讨论vue中混入mixin的应用的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:讨论vue中混入mixin的应用

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址