【Vue】Mixin 混入

news2024/11/19 0:25:45

Vue Mixin 混入

1.简介

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

2.基本使用

2.1 定义混入

首先,在混入中定义的往往是可复用的内容,因此,一般会单独建立一个文件夹 mixin,专门用于存放混入文件。

在这里插入图片描述

let testMixin = {
    created() {
        console.log("这是testMixin中的created方法!");
    },
    methods: {
        hello() {
            console.log("hello from testMixin!");
        }
    },
}

export default testMixin

2.2 使用混入

在这里插入图片描述

此时,在主页组件 index.vue 中,没有定义任何的 created、methods 或 mounted等,但是此时打开控制台:

在这里插入图片描述

说明此时执行了混入中定义的 created 方法!

此时,再为主页组件加上 mounted 生命周期钩子,并在其中使用this.hello()

在这里插入图片描述

控制台打印出的结果为:

在这里插入图片描述

即成功执行了混入对象中定义的方法 hello(),也验证了当前组件中合并了混入对象中定义的选项和方法。这就是混入的基本使用。

2.选项合并

当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”。数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先。

仍然使用上面的例子,我们在混入对象 testMixin 中,已经定义了一个方法 hello()。那么如果此时我们在主页组件中再定义一个 hello() 方法,mounted 中执行的会是哪一个 hello() 呢?

在这里插入图片描述

最终,控制台打印结果如下:

在这里插入图片描述

此时,同名的 created 生命周期钩子进行了合并,合并为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用

而 methods 中的 hello 方法因为冲突,在合并时保留组件中的hello,即优先当前组件的选项,因此打印的是“hello from home!”。

3.可复用性与全局混入

3.1 可复用性

开篇提过,混入对象可成为一个可复用功能,我们在另外的组件中引入已定义的混入对象,可实现同样的逻辑与功能。

那么有个问题,如果很多个组件同时使用同一个混入对象,这时候都要重复一个步骤,就是先导入混入对象,然后再使用,类似如下:

<script>
import myMixins from "../mixins";
export default {
  mixins: [myMixins]
};
</script>

这样未免有点繁琐,且代码冗余,此时我们可以使用全局混入来优化这个问题。

3.2 全局混入

在 Vue 中,混入也可以进行全局注册

例如这里,我们在 main.js 中通过Vue.mixin()引入混入对象,后续即可全局使用(作用于该Vue实例下的所有组件

在这里插入图片描述

然后在主页组件中,将我们原来引入混入的代码删除:

在这里插入图片描述

此时刷新页面,查看控制台输出信息:

在这里插入图片描述

仍然执行了混入中的方法!其效果与在每个组件中单独引入混入对象相同,这便是全局混入。

请谨慎使用全局混入,因为它会影响每个单独创建的 Vue 实例 (包括第三方组件)。大多数情况下,只应当应用于自定义选项,就像上面示例一样。推荐将其作为插件发布,以避免重复应用混入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/898636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序卡片横向滚动竖图

滚动并不是使用swiper&#xff0c;该方式使用的是scroll-view实现 Swiper局限性太多了&#xff0c;对竖图并不合适 从左往右滚动图片示例 wxml代码&#xff1a; <view class"img-x" style"margin-top: 10px;"><view style"margin: 20rpx;…

XOR Subsequence 2023“钉耙编程”中国大学生算法设计超级联赛(10)hdu7390

Problem - 7390 题目大意&#xff1a;有一个n个数的数组a&#xff0c;对他们的所有非空子序列求异或和得到长度为的数组b&#xff0c;给出b&#xff0c;求a 1<n<18 思路&#xff1a;可以发现&#xff0c;a数组其实是b数组的线性基 &#xff08;线性基详解_Hypoc_的博客…

el-tabs的上方目录栏增加自定义按钮

需求如图&#xff1a;需要在el-tabs的最右侧加一个自定义按钮&#xff0c;它不属于el-tab-pane&#xff0c;而且要在最右侧。这时候就要使用定位来完成这个按钮的显示。 代码结构如下&#xff1a;自定义按钮要与el-tabs的层级并列&#xff0c;然后通过css设置custom-btn的定位…

15、分布式锁简介

一 分布式锁简介 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁&#xff0c;只要大家使用的是同一把锁&#xff0c;那么我们就能锁住线程&#xff0c;不让线程进行&#xff0c;让程序串行执行&#xf…

2023.8-java-基本语法

基本语法 编写 Java 程序时&#xff0c;应注意以下几点&#xff1a; 大小写敏感&#xff1a;Java 是大小写敏感的&#xff0c;这就意味着标识符 Hello 与 hello 是不同的。类名&#xff1a;对于所有的类来说&#xff0c;类名的首字母应该大写。如果类名由若干单词组成&#x…

nginx(七十七)nginx与包体的探究

一 nginx与body体 说明&#xff1a;本文不具有生产意义,只是为了nginx知识的闭环,可以跳过即可 --> "数据脱敏"题外话&#xff1a; 对body的CURD,nginx和openresty处理方式不同强调&#xff1a; 本文是基于http演示的,如果是https加密我们是看不到的 ① core模…

博客系统之功能测试

博客系统共有&#xff1a;用户登录功能、发布博客功能、查看文章详情功能、查看文章列表功能、删除文章功能、退出功能 1.登录功能&#xff1a; 1.1测试对象&#xff1a;用户登录 1.2测试用例 方法&#xff1a;判定表 用例 编号 操作步骤预期结果实际结果截图1 1.用户名正确…

安全学习DAY18_信息打点-APP资产搜集

信息打点-APP资产&静态提取&动态抓包&动态调试 文章目录 信息打点-APP资产&静态提取&动态抓包&动态调试本节知识&思维导图本节使用到的链接&工具 如何获取目标APP从名称中获取APP从URL获取APP APP搜集资产信息APP提取信息分类信息提取方式信息…

常用的电参数

电参数根据电流的特点可以分为直流电参数和交流电参数&#xff0c;在电参数中有些是可以通过电参数表测得&#xff0c;有些参数则为通过测得的参数计算而来。 一、电参数 1.1 直接可测电参数 ——瞬时电压值 ——瞬时电流值 n——采样点数 f——频率 time——时间 其中&…

使用IText导出复杂pdf

1、问题描述 需要将发票导出成pdf&#xff0c;要求每页都必须包含发票信息和表头行。 2、解决方法 使用IText工具实现PDF导出 IText8文档&#xff1a;Examples (itextpdf.com) 3、我的代码 引入Itext依赖&#xff0c;我这里用的是8.0.1版本 <dependency><groupId>…

基于阿里云 Flink+Hologres 搭建实时数仓

摘要&#xff1a;本文作者阿里云 Hologres 高级研发工程师张高迪&阿里云 Flink 技术内容工程师张英男&#xff0c;本篇内容将为您介绍如何通过实时计算 Flink 版和实时数仓 Hologres 搭建实时数仓。 Tips&#xff1a;点击「阅读原文」免费领取 5000CU*小时 Flink 云资源 背…

Linux Debian12命令终端安装pip install rsa报错error: externally-managed-environment

Linux Debian12在命令终端安装pip install rsa出现error: externally-managed-environment错误,如下图&#xff1a; 仔细读了一下报错内容才搞懂&#xff0c;原来是Debian12安装Python包时需要使用apt install python3-包名&#xff0c;例如安装rsa&#xff0c;使用sudo apt …

太阳能的发展与应用

目录 1.太阳能的概念 2.太阳能的原理 3.太阳能的发展过程 4.太阳能的普及对人类的作用 1.太阳能的概念 太阳能是指利用太阳辐射能的能源。太阳能可以分为两种利用方式&#xff1a;热能和光能。 太阳能热能是指将太阳辐射的热能直接转化为热能供人们使用。这种利用方式包括太…

导出Excel一些格式、样式的 代码

1.合并单元格 // 合并单元格&#xff08;开始行, 结束行, 开始列, 结束列&#xff09;CellRangeAddress regionRow0 new CellRangeAddress(0, 0, 0, 10);sheet.addMergedRegion(regionRow0);2.单元格根据汉字自动匹配颜色 HSSFConditionalFormattingRule orange scf.createCo…

SE24维护类、接口interface(如何看懂CO03事务码对应的abap代码)

我想读懂CO03这个事务码的代码。 也不是全都读懂&#xff0c;只要读懂其中一小部分就可以了。如下图&#xff1a; 记入文档的货物移动。 现在已经大概知道了这种SAP系统自带事务码的代码结构&#xff0c;因为我想看懂的部分&#xff0c;毕竟是其中最简单的部分-----ALV&#…

大疆mini 3 Pro 手工拍摄倾斜摄影照片, 利用WebODM 制作老房子的模型

最近比较着迷于无人机&#xff0c; 因此也研究了一些无人机图片的处理技术&#xff0c; 对于航空倾斜摄影的图片处理&#xff0c; 发现WebODM 这个开源软件确实不错&#xff0c; 利用手里的大疆mini 3 pro&#xff0c; 手动拍摄了一些关于家里的老房子的照片&#xff0c; 最后果…

MFC140.dll缺失的修复方法,安装MFC140.dll文件

大家好&#xff0c;今天我要和大家分享的是如何正确安装和使用MFC140.dll。MFC140.dll是一种常见的动态链接库文件&#xff0c;它是Microsoft Foundation Classes(MFC)的一部分&#xff0c;被广泛应用于Windows操作系统中的各种应用程序中。在本文中&#xff0c;我们将详细介绍…

什么是高度塌陷?

目录 高度塌陷 解决高度塌陷的方法 由于前面将高度塌陷和外边距重叠搞混&#xff0c;现在重新写一下高度塌陷 高度塌陷 在文档流中&#xff0c;父元素的高度默认是被子元素撑开的&#xff0c;也就是子元素多高&#xff0c;父元素就多高。但是当为子元素设置浮动以后&#xff…

win10的pycharm开发工具使用Jupyter的各种报错:环境问题

一、问题 在win10系统的pycharm开发工具使用Jupyter的各种报错&#xff0c;却一直解决不了。 我一度使用过购买云服务器、重装系统等等各种办法&#xff0c;都没能解决。 例如&#xff1a;在speech_processing.ipynb文件中 import librosa y, sr librosa.load(C:/Test/000…

基于Forcite模块的分子动力学研究药剂与矿物相互作用实例(一)

关键词&#xff1a;相互作用 MS Forcite 分子动力学 径向分布 笔名&#xff1a;杨过 Forcite模块是分子动力学计算的主要模块&#xff0c;研究范围广&#xff0c;可以对多种周期性体系进行计算分析&#xff0c;在矿物分选领域中主要是计算分析药剂与矿物相互作用&#xff0…