vue2-mixin的定义与和使用

news/2025/2/6 11:05:27/

文章目录

  • 1. 什么是mixin
  • 2. 局部混入
  • 3. 全局混入
  • 4. 多mixin混入冲突
    • 4.1 替换性
    • 4.2 合并型
    • 4.3 合并队列型
    • 4.4 叠加性
  • 5. 使用场景

#vue2-mixin的使用

mixin_4">1. 什么是mixin

  • Mixin是面向对象语言中的一个类,提供了方法的实现,其他类可以访问mixin类的方法而不用继承
  • Mixin类通常作为功能模块使用,在需要该功能的地方进行混入,有利于代码复用,又避免了多继承的复杂
  • 在Vue中,Mixin的官方定义是:提供了一种非常灵活的方法,来分发Vue组件中的可复用功能
  • 本质就是一个js对象,可以包含组件中的任意功能选项,data,components,methods,computed,watch,钩子函数等
  • 我们只要在mixin中声明好功能选项,当组件使用mixins对象时,所有的mixin对象的选项豆浆被混入该组件本身的选项中来
  • 可以分为局部混入和全局混入

2. 局部混入

  • 定义一个mixin对象,有组件data,methods
const myMixin={created(){this.sayHello()},methods:{sayHello(){console.log('hello')}}
}
  • 在其他组件中,通过mixins属性调用mixin对象
Vue.component('ComponentA',{mixins:[myMixin]
})
  • 该组件使用时,混合了mixin里面的方法

3. 全局混入

  • 通过Vue.mixin()进行全局混入
Vue.mixin({created(){console.log('global Mixin')}
})
  • 使用全局混入时,会影响到每一个组件的实例,包括第三方组件
    ** 当组件存在和mixin对象相同的选项的时候,进行地柜合并的时候徐建的选项会覆盖mixin的选项,但是如果是钩子函数,会合并成一个数组,先执行mixins的钩子函数,再执行组件的钩子函数

mixin_44">4. 多mixin混入冲突

  • 就是如果我们在多个mixin里面里面重复定义了功能该怎么处理

4.1 替换性

  • 如果是props,methods,inject,computed会被后来者替换

4.2 合并型

  • 如果是data则合并

4.3 合并队列型

  • 如果是生命周期函数和watch,按照合并顺序依此执行

4.4 叠加性

component,directives,filters等会通过原型链进行叠加

5. 使用场景

  • 我们定义一个弹窗modal,通过ifShow来控制是否显示
const Modal={template:'#modal',data(){return{ifShow:false}},methods:{toggleSHow(){this.ifShow=!this.ifShow}}
}
  • 然后我们同事还需要一个提示框tip,通过ifShow来控制是否显示
const Tip={template:'#tip',data(){return{ifShow:false}},methods:{toggleSHow(){this.ifShow=!this.ifShow}}
}
  • 我们观察发现,两个逻辑是相同的,代码控制也是相同的,这时候就可以把相同的部分抽象为一个mixin
const toggle={data(){return {ifShow:false}},methods:{toggleShow(){this.ifShow=!this.ifShow}}
}

然后再两个组件上,只需要引入mixin

const Modal={template:'#modal',mixins:[toggle]
}
const Tip={template:'#tip',mixins:[toggle]
}

http://www.ppmy.cn/news/1569778.html

相关文章

[SAP ABAP] 面向对象程序设计-属性和方法

属性( Attributes) :对象的属性及特征 方法( Method ):定义对象的行为 从对象属性和方法是属于类还是属于对象的实例,可以区分为静态属性(static attributes) / 静态方法(static methods),实例属性(instance attributes) / 实例方…

标准库发送数据深入理解USART

如何使用USART(编程理论讲解) 如下是串口发送信息的原理图,CPU将数据写入TDR寄存器,然后串口外设将寄存器中的数据发送出去 这就是串口发送的全部流程 (图中所有图片均来自博主 铁头山羊) 在这个发送流程的过程中,我…

如何在 Kafka 中实现自定义分区器

今天我来给大家分享一下如何在 Kafka 中实现一个自定义分区器。Kafka 是一个分布式流处理平台,能够高效地处理海量数据。默认情况下,Kafka 使用键的哈希值来决定消息应该发送到哪个分区,但是有时我们需要根据特定的业务逻辑来定制分区策略。这…

需求分析应该从哪些方面来着手做?

需求分析一般可从以下几个方面着手: 业务需求方面 - 与相关方沟通:与业务部门、客户等进行深入交流,通过访谈、问卷调查、会议讨论等方式,明确他们对项目的期望、目标和整体业务需求,了解项目要解决的业务问题及达成的…

S4 HANA手工记账Tax Payable – FB41

本文主要介绍在S4 HANA OP中手工记账Tax Payable – FB41。具体请参照如下内容: 手工记账Tax Payable – FB41 该事务代码用于手工处理税码统驭科目的记账,一般税码科目需要设置为只能自动记账,因此无法手工对税码统驭科目记账,但…

低代码系统-产品架构案例介绍、蓝凌(十三)

蓝凌低代码系统,依旧是从下到上,从左至右的顺序。 技术平台h/iPaas 指低层使用了哪些技术,例如:微服务架构,MySql数据库。个人认为,如果是市场的主流,就没必要赘述了。 新一代门户 门户设计器&a…

mac安装wireshark

mac启动wireshark时,提示没有权限抓包,报错内容如下: “The capture session could not be initiated on interface ‘en0’ (You don’t have permission to capture on that device). Please check to make sure you have sufficient perm…

celery策略回测任务运行及金融量化数据增量更新|年化18.8%,回撤8%的组合策略(python代码)

原创内容第787篇,专注量化投资、个人成长与财富自由。 昨天我们分享了量化数据的采集与增量更新:更新数据,年化18.8%,回撤8%的组合策略 | akshare与tushare历史日线数据下载与更新(python代码) 今天讲讲量…