【Vue】Mixin 混入

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.mzph.cn/news/43333.shtml

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

相关文章

Java将时间戳转化为特定时区的日期字符串

先上代码&#xff1a; ZonedDateTime dateTime ZonedDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()),zone ); //2019-12-01T19:01:4608:00String formattedDate dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd") ); //2019-12-…

.git内存清理方式

查看前15个大文件 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -15 | awk {print$1})"删除文件夹&#xff08;public/housimg文件夹目录&#xff09; git filter-branch --tree-filter rm -rf publ…

解决使用element ui时el-input的属性type=number,仍然可以输入e的问题。

使用element ui时el-input的属性typenumber&#xff0c;仍然可以输入e&#xff0c; 其他的中文特殊字符都不可以输入&#xff0c;但是只有e是可以输入的&#xff0c;原因是e也输入作为科学计数法的时候&#xff0c;e是可以被判定为数字的&#xff0c; 但是有些场景是需要把e这种…

DICOM图像的常用一些参数解析

医学图像DICOM医学影像文件格式详解 Dicom文件基本操作 DICOM图像参数&#xff1f; 像素&#xff1a;构成图片的小色点。图像每个维度的像素个数——该维度一共有多少个均匀分布的像素点。 分辨率&#xff08;单位DPI&#xff09;&#xff1a;每英寸&#xff08;Inch&#xf…

鸿蒙剥离 AOSP 不兼容 Android 热门问题汇总,不吹不黑不吵

上周发了一篇 《鸿蒙终于不套壳了&#xff1f;纯血 HarmonyOS NEXT 即将到来》的相关资讯&#xff0c;没想到大家「讨&#xff08;fa&#xff09;论&#xff08;xie&#xff09;」的热情很高&#xff0c;莫名蹭了一波流量&#xff0c;虽然流量对我来说也没什么用&#xff0c;但…

私密数据采集:隧道爬虫IP技术的保密性能力探究

作为一名专业的爬虫程序员&#xff0c;今天要和大家分享一个关键的技术&#xff0c;它能够为私密数据采集提供保密性能力——隧道爬虫IP技术。如果你在进行敏感数据采集任务时需要保护数据的私密性&#xff0c;那么这项技术将是你的守护神。 在进行私密数据采集任务时&#xff…

不了解UI设计需要掌握的技能? 优漫动游

很多人听说过UI设计行业&#xff0c;知道它是用来制作界面的高薪技术&#xff0c;但对于做UI设计需要什么技能却不是很清楚。且看本文的分析。​ 不了解UI设计需要掌握的技能&#xff1f;   UI设计是英文User和interface的缩写&#xff0c;是指对软件的人机交互、操作逻辑、界…

Java基础知识题(二)

系列文章目录 Java基础知识题(一) 文章目录 系列文章目录 前言 1. Java中的 组合、聚合和关联有什么区别&#xff1f; 2. 解释为什么Java被称作是“平台无关的编程语言”&#xff1f; 3. 简述什么是值传递和引用传递&#xff1f;重点 4. 详细阐述Java进程和线程的区别 …

Java # JVM

一、1.8之前 运行时数据区&#xff08;进程共享&#xff09; 运行时常量池为什么要有方法区&#xff1a; jvm完成类装载后&#xff0c;需要将class文件中的常量池转入内存&#xff0c;保存在方法区中为什么是常量&#xff1a; 常量对象操作较多&#xff0c;为了避免频繁创建和…

图像去雨-雨线清除-图像处理-(计算机作业附代码)

背景 多年来&#xff0c;图像去雨已经被广泛研究&#xff0c;使用传统方法和基于学习的方法。然而&#xff0c;传统方法如高斯混合模型和字典学习方法耗时&#xff0c;并且无法很好地处理受到严重雨滴影响的图像块。 算法 通过考虑雨滴条状特性和角度分布&#xff0c;这个问…

【Leetcode】98. 验证二叉搜索树

一、题目 1、题目描述 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1: 输入:root = …

马上七夕到了,用各种编程语言实现10种浪漫表白方式

目录 1. 直接表白&#xff1a;2. 七夕节表白&#xff1a;3. 猜心游戏&#xff1a;4. 浪漫诗句&#xff1a;5. 爱的方程式&#xff1a;6. 爱心Python&#xff1a;7. 心形图案JavaScript 代码&#xff1a;8. 心形并显示表白信息HTML 页面&#xff1a;9. Java七夕快乐&#xff1a;…

QT的布局与间隔器介绍

布局与间隔器 1、概述 QT中使用绝对定位的布局方式&#xff0c;无法适用窗口的变化&#xff0c;但是&#xff0c;也可以通过尺寸策略来进行 调整&#xff0c;使得 可以适用窗口变化。 布局管理器作用最主要用来在qt设计师中进行控件的排列&#xff0c;另外&#xff0c;布局管理…

Android 远程真机调研

背景 现有的安卓测试机器较少&#xff0c;很难满足 SDK 的兼容性测试及线上问题&#xff08;特殊机型&#xff09;验证&#xff0c;基于真机成本较高且数量较多的前提下&#xff0c;可以考虑使用云测平台上的机器进行验证&#xff0c;因此需要针对各云测平台进行调研、比较。 …

服装定制小程序

如今&#xff0c;人们对时尚的追求已不仅仅停留在传统的购买与穿搭上&#xff0c;而是更加注重个性化和定制化的需求。为满足这一需求&#xff0c;乔拓云网推出了一款创新的服装定制小程序&#xff0c;为用户提供定制专属时尚的全新旅途。 通过进入【乔拓云】后台&#xff0c;用…

Ordinals 之后,以太坊铭文协议 Ethscriptions 如何再塑 NFT 资产形态

随着加密市场的发展&#xff0c;NFT 赛道逐渐形成了其独有的市场。但在加密熊市的持续影响下&#xff0c;今年 NFT 赛道的发展充满坎坷与挑战。据 NFTGO 数据显示&#xff0c;截至 8 月 7 日&#xff0c;与去年相比&#xff0c;NFT 市值总计约 56.4 亿美元&#xff0c;过去 1 年…

搜狗拼音暂用了VSCode及微信小程序开发者工具快捷键Ctrl + Shit + K 搜狗拼音截图快捷键

修改搜狗拼音的快捷键 右键--更多设置--属性设置--按键--系统功能快捷键--系统功能快捷键设置--取消Ctrl Shit K的勾选--勾选截屏并设置为Ctrl Shit A 微信开发者工具设置快捷键 右键--Command Palette--删除行 微信开发者工具快捷键 删除行&#xff1a;Ctrl Shit K 或…

无脑入门pytorch系列(四)—— scatter_

本系列教程适用于没有任何pytorch的同学&#xff08;简单的python语法还是要的&#xff09;&#xff0c;从代码的表层出发挖掘代码的深层含义&#xff0c;理解具体的意思和内涵。pytorch的很多函数看着非常简单&#xff0c;但是其中包含了很多内容&#xff0c;不了解其中的意思…

element问题总结2

20.隐藏el-calendar 的多余的日子 /deep/ .el-calendar-table:not(.is-range) td.next {display: none;}/deep/ .el-calendar-table:not(.is-range) td.prev {visibility: hidden;}/deep/ .el-calendar-table td {border: 1px solid #dfe6ec;} 21.点击今天,上个月,下个月的时候…