当前位置: 首页 > article >正文

vue2-mixin的定义与和使用

文章目录

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

#vue2-mixin的使用

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的钩子函数,再执行组件的钩子函数

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]
}

相关文章:

vue2-mixin的定义与和使用

文章目录 1. 什么是mixin2. 局部混入3. 全局混入4. 多mixin混入冲突4.1 替换性4.2 合并型4.3 合并队列型4.4 叠加性 5. 使用场景 #vue2-mixin的使用 1. 什么是mixin Mixin是面向对象语言中的一个类,提供了方法的实现,其他类可以访问mixin类的方法而不用…...

安装和卸载RabbitMQ

我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/SUWXdDb0UoCV86xP6b3c7qtMn6b 使用Ubuntu环境进行安装 一、安装Erlang 在安装RabbitMQ之前,我们需要先安装Erlang,RabbitMQ需要Erlang的语言支持 #安装Erlang sudo apt-get install erlang 在安装的过程中,会弹出一段信息,此…...

Apache HttpClient

HttpClient是apache组织下面的一个用于处理HTTP请求和响应的来源工具,是一个在JDK基础类库是做了更好的封装的类库。 HttpClient 使用了连接池技术来管理 TCP 连接,这有助于提高性能并减少资源消耗。连接池允许 HttpClient 复用已经建立的连接&#xff0…...

Golang 并发机制-6:掌握优雅的错误处理艺术

并发编程可能是提高软件系统效率和响应能力的一种强有力的技术。它允许多个工作负载同时运行,充分利用现代多核cpu。然而,巨大的能力带来巨大的责任,良好的错误管理是并发编程的主要任务之一。 并发代码的复杂性 并发编程增加了顺序程序所不…...

react使用DatePicker日期选择器

1、引入&#xff1a;npm i day 2、页面引入&#xff1a; import dayjs from dayjs; 3、使用 <DatePicker onChange{onChange} value{datas ? dayjs(datas) : null} /> 4、事件 const onChange (date, dateString) > {setInput(dateString)setDatas(dateString)…...

第27节课:安全审计与防御—构建坚固的网络安全防线

目录 安全审计工具与流程安全审计工具NessusNmapBurp Suite 安全审计流程规划与准备信息收集漏洞扫描分析与评估报告与建议 安全防御策略网络层防御应用层防御数据层防御安全管理 结语 在当今数字化时代&#xff0c;网络安全已成为企业和个人不可忽视的重要议题。随着网络攻击手…...

深度学习 Pytorch 基础网络手动搭建与快速实现

为了方便后续练习的展开&#xff0c;我们尝试自己创建一个数据生成器&#xff0c;用于自主生成一些符合某些条件、具备某些特性的数据集。 导入相关的包 # 随机模块 import random# 绘图模块 import matplotlib as mpl import matplotlib.pyplot as plt# 导入numpy import nu…...

保姆级教程Docker部署KRaft模式的Kafka官方镜像

目录 一、安装Docker及可视化工具 二、单节点部署 1、创建挂载目录 2、运行Kafka容器 3、Compose运行Kafka容器 4、查看Kafka运行状态 三、集群部署 四、部署可视化工具 1、创建挂载目录 2、运行Kafka-ui容器 3、Compose运行Kafka-ui容器 4、查看Kafka-ui运行状态 …...

51单片机看门狗系统

在 STC89C52 单片机中&#xff0c;看门狗控制寄存器的固定地址为 0xE1。此地址由芯片厂商在硬件设计时确定&#xff0c;但是它在头文件中并未给出&#xff0c;因此在使用看门狗系统时需要声明下这个特殊功能寄存器 sfr WDT_CONTR 0xE1; 本案将用一个小灯的工作状况来展示看门…...

RNN/LSTM/GRU 学习笔记

文章目录 RNN/LSTM/GRU一、RNN1、为何引入RNN&#xff1f;2、RNN的基本结构3、各种形式的RNN及其应用4、RNN的缺陷5、如何应对RNN的缺陷&#xff1f;6、BPTT和BP的区别 二、LSTM1、LSTM 简介2、LSTM如何缓解梯度消失与梯度爆炸&#xff1f; 三、GRU四、参考文献 RNN/LSTM/GRU …...

Android记事本App设计开发项目实战教程2025最新版Android Studio

平时上课录了个视频&#xff0c;从新建工程到打包Apk&#xff0c;从头做到尾&#xff0c;没有遗漏任何实现细节&#xff0c;欢迎学过Android基础的同学参加&#xff0c;如果你做过其他终端软件开发&#xff0c;也可以学习&#xff0c;快速上手Android基础开发。 Android记事本课…...

【Leetcode 每日一题 - 补卡】680. 验证回文串 II

问题背景 给你一个字符串 s s s&#xff0c;最多 可以从中删除一个字符。 请你判断 s s s 是否能成为回文字符串&#xff1a;如果能&#xff0c;返回 t r u e true true&#xff1b;否则&#xff0c;返回 f a l s e false false。 数据约束 1 ≤ s . l e n g t h ≤ 1 0 …...

Leetcode 8283 移除排序链表中的重复元素

Leetcode 82&83 移除排序链表中的重复元素 Leetcode 83 题目描述 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2] 示…...

【R语言】获取数据

R语言自带2种数据存储格式&#xff1a;*.RData和*.rds。 这两者的区别是&#xff1a;前者既可以存储数据&#xff0c;也可以存储当前工作空间中的所有变量&#xff0c;属于非标准化存储&#xff1b;后者仅用于存储单个R对象&#xff0c;且存储时可以创建标准化档案&#xff0c…...

为什么在springboot中使用autowired的时候它黄色警告说不建议使用字段注入

byType找到多种实现类导致报错 Autowired: 通过byType 方式进行装配, 找不到或是找到多个&#xff0c;都会抛出异常 我们在单元测试中无法进行字段注入 字段注入通常是 private 修饰的&#xff0c;Spring 容器通过反射为这些字段注入依赖。然而&#xff0c;在单元测试中&…...

Unity游戏(Assault空对地打击)开发(6) 鼠标光标的隐藏

前言 鼠标光标在游戏界面太碍眼了&#xff0c;要隐藏掉。 详细操作 新建一个脚本HideCursor&#xff0c;用于隐藏/取消隐藏光标。 写入以下代码。 意义&#xff1a;游戏开始自动隐藏光标&#xff0c;按Esc&#xff08;隐藏<-->显示&#xff09;。 using System.Collectio…...

哪些专业跟FPGA有关?

FPGA产业作为近几年新兴的技术领域&#xff0c;薪资高、待遇好&#xff0c;吸引了大量的求职者。特别是对于毕业生&#xff0c;FPGA领域的岗位需求供不应求。那么&#xff0c;哪些专业和FPGA相关呢&#xff1f; 哪些专业跟FPGA有关&#xff1f; 微电子学与固体电子学、微电子科…...

UE5 蓝图学习计划 - Day 14:搭建基础游戏场景

在上一节中&#xff0c;我们 确定了游戏类型&#xff0c;并完成了 项目搭建、角色蓝图的基础设置&#xff08;移动&#xff09;。今天&#xff0c;我们将进一步完善 游戏场景&#xff0c;搭建 地形、墙壁、机关、触发器 等基础元素&#xff0c;并添加角色跳跃功能&#xff0c;为…...

ZooKeeper单节点详细部署流程

ZooKeeper单节点详细部署流程 文章目录 ZooKeeper单节点详细部署流程 一.下载稳定版本**ZooKeeper**二进制安装包二.安装并启动**ZooKeeper**1.安装**ZooKeeper**2.配置并启动**ZooKeeper** ZooKeeper 版本与 JDK 兼容性3.检查启动状态4.配置环境变量 三.可视化工具管理**Zooke…...

Python----Python高级(并发编程:进程Process,多进程,进程间通信,进程同步,进程池)

一、进程Process 拥有自己独立的堆和栈&#xff0c;既不共享堆&#xff0c;也不共享栈&#xff0c;进程由操作系统调度&#xff1b;进程切换需要的资源很最大&#xff0c;效率低。 对于操作系统来说&#xff0c;一个任务就是一个进程&#xff08;Process&#xff09;&#xff…...

ComfyUI安装调用DeepSeek——DeepSeek多模态之图形模型安装问题解决(ComfyUI-Janus-Pro)

ComfyUI 的 Janus-Pro 节点&#xff0c;一个统一的多模态理解和生成框架。 试用&#xff1a; https://huggingface.co/spaces/deepseek-ai/Janus-1.3B https://huggingface.co/spaces/deepseek-ai/Janus-Pro-7B https://huggingface.co/spaces/deepseek-ai/JanusFlow-1.3B 安装…...

React中为每个列表项显示多个DOM节点的解决方案

React中为每个列表项显示多个DOM节点的解决方案 问题背景&#xff1a;Fragment的简写形式的限制解决方案&#xff1a;使用显式的<Fragment>组件实现步骤 其他替代方案方法一&#xff1a;使用<div>包裹节点方法二&#xff1a;使用React.createElement创建Fragment 为…...

VoIP中常见术语

在 VoIP&#xff08;Voice over Internet Protocol&#xff0c;基于互联网协议的语音传输&#xff09;技术中&#xff0c;涉及许多专业术语。以下是常见术语及其含义&#xff1a; 1. 核心协议相关 SIP&#xff08;Session Initiation Protocol&#xff0c;会话发起协议&#xf…...

LeetCode 0090.子集 II:二进制枚举 / 回溯

【LetMeFly】90.子集 II&#xff1a;二进制枚举 / 回溯 力扣题目链接&#xff1a;https://leetcode.cn/problems/subsets-ii/ 给你一个整数数组 nums &#xff0c;其中可能包含重复元素&#xff0c;请你返回该数组所有可能的 子集&#xff08;幂集&#xff09;。 解集 不能 …...

UE求职Demo开发日志#22 显示人物信息,完善装备的穿脱

1 创建一个人物信息显示的面板&#xff0c;方便测试 简单弄一下&#xff1a; UpdateInfo函数&#xff1a; 就是获取ASC后用属性更新&#xff0c;就不细看了 2 实现思路 在操作目标为装备栏&#xff0c;或者操作起点为装备栏时&#xff0c;交换前先判断能否交换&#xff08;只…...

利用deepseek参与软件测试 基本架构如何 又该在什么环节接入deepseek

利用DeepSeek参与软件测试&#xff0c;可以考虑以下基本架构和接入环节&#xff1a; ### 基本架构 - **数据层** - **测试数据存储**&#xff1a;用于存放各种测试数据&#xff0c;包括正常输入数据、边界值数据、异常数据等&#xff0c;这些数据可以作为DeepSeek的输入&…...

如何安装PHP依赖库 更新2025.2.3

要在PHP项目中安装依赖&#xff0c;首先需要确保你的系统已经安装了Composer。Composer是PHP的依赖管理工具&#xff0c;它允许你声明项目所需的库&#xff0c;并管理它们。以下是如何安装Composer和在PHP项目中安装依赖的步骤&#xff1a; 一. 安装Composer 对于Windows用户…...

java求职学习day28

XML 1. XML基本介绍 1.1 概述 XML 即可扩展标记语言&#xff08; Extensible Markup Language &#xff09; (1)W3C 在 1998 年 2 月发布 1.0 版本&#xff0c; 2004 年 2 月又发布 1.1 版本&#xff0c;但因为 1.1 版本不能向下兼容 1.0 版本&#xff0c;所以1.1 没有人用。…...

EF Core与ASP.NET Core的集成

目录 分层项目中EF Core的用法 数据库的配置 数据库迁移 步骤汇总 注意&#xff1a; 批量注册上下文 分层项目中EF Core的用法 创建一个.NET类库项目BooksEFCore&#xff0c;放实体等类。NuGet&#xff1a;Microsoft.EntityFrameworkCore.RelationalBooksEFCore中增加实…...

pytorch逻辑回归实现垃圾邮件检测

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 完整代码&#xff1a; import torch import torch.nn as nn import torch.optim as optim from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split …...