讨论vue中混入mixin的应用
混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。
即 mixin 在引入组件之后,会将组件内部的内容如data、method等属性与父组件相应内容进行合并。相当于在引入后,父组件的各种属性方法都被扩充了。
比如在两个不同的组件的组件中调用sayHi方法,需要重复定义,倘若方法比较复杂,代码将更加冗余,但使用mixins 就相对比较简单了。
在 mixin.js 文件中定义一个混入对象
let mixin = { data () { return { userName: 'mixin' } }, created () { this.sayHello() }, methods: { sayHello () { console.log(`${this.userName}, wele`) } } } export default mixin
然后定义两个组件,分别在组件中引入
<script> import mixin from '../mixin' export default { mixins: [mixin] } </script>
则两个组件的打印结果都为
如果在两个组件 data 中定义了各自的 userName,则打印结果会引用各自组件中的 userName
如果在两个组件的 methods 中重复定义了相同的方法,则 mixin 中的方法会被覆盖
给其中一个组件定义自己的 userName 和 sayHi 方法
<script> import mixin from '../mixin' export default { mixins: [mixin], data() { return { userName: 'BComponent' } }, created () { this.sayHello() }, methods: { sayHello () { console.log(`Hi, ${this.userName}`) } } } </script>
则打印结果
这有点像注册了一个 vue 公共方法,可以在多个组件中使用。还有一点类似于在原型对象中注册方法,并且可以定义相同函数名的方法进行覆盖。
混入也可以进行全局注册,但一般情况下不会全局使用,因为会污染 vue 实例。
我一般在项目中会这样用,比如在多个组件中有用到通用选择器,选项是是,否,可以使用 mixin 来添加一个统一的字典项过滤器,来实现选项的回显。
1. 创建一个 Dictionary.js 文件,用于保存字典项对应的含义,并将其暴露出去
export const COMMON_SELECT = [ { code: 0, label: '是'}, { code: 1, label: '否'} ];
注此处创建的 Dictionary.js 文件,也可以在页面渲染的时候拿来循环选项,具体代码如下
import { COMMON_SELECT } from '../constants/Dictionary.js' export default { data() { return { SelectOptions: COMMON_SELECT } } } <select v-mode="selStatus"> <el-option v-for="item in SelectOptions" :key="item.code" :label="item.label" :value="item.code"></el-option> </select>
2.然后再创建一个 filter.js 文件,保存自定义的过滤函数
import { COMMON_SELECT } from '../constants/Dictionary.js' export default { filters: { SelectFilter: (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)
欧了,这样我们就可以在任一组件中随意使用了
<template> <div> .... {{ status | SelectFilter }} .... </div> </template>
以上就是讨论vue中混入mixin的应用的详细内容,更多关于vue中混入mixin的应用的资料请关注狼蚁SEO其它相关文章!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程