vue2的混入mixin使用

news/2024/9/19 8:49:58/文章来源:https://www.cnblogs.com/sunshine233/p/18203961

前言

vue3中不再推荐使用mixins !

在 Vue 2 中,mixins 是创建可重用组件逻辑的主要方式。尽管在 Vue 3 中保留了 mixins 支持,但对于组件间的逻辑复用,使用组合式 API 的组合式函数是现在更推荐的方式。

参考文档:

  • https://juejin.cn/post/7033424132427481101
  • https://segmentfault.com/a/1190000043408696

混入的优点

可复用性强,方便提高组件代码复用,不用传递状态,可以修改一个地方引起全局都被修改的效果。

混入的缺点

 

  1. 不清晰的数据来源:当使用了多个 mixin 时,实例上的数据属性来自哪个 mixin 变得不清晰,这使追溯实现和理解组件行为变得困难。这也是推荐在组合式函数中使用 ref + 解构模式的理由:让属性的来源在消费组件时一目了然。
  2. 命名空间冲突:多个来自不同作者的 mixin 可能会注册相同的属性名,造成命名冲突。若使用组合式函数,你可以通过在解构变量时对变量进行重命名来避免相同的键名。
  3. 隐式的跨 mixin 交流:多个 mixin 需要依赖共享的属性名来进行相互作用,这使得它们隐性地耦合在一起。而一个组合式函数的返回值可以作为另一个组合式函数的参数被传入,像普通函数那样。

mixin 使用方法

下面开始介绍混入的使用方法。

1.  在src下新建mixins文件夹,然后新建一个空白js文件

2. .vue文件的结构如下,把其中的script部分复制出来,放到刚才的testMixin.js中

test.vue

<template><div><h1>Mixins</h1></div>
</template><script>
export default {components: {},data() {return{}},mounted() { },computed: {},methods: {},
}
</script>
<style scoped></style>

 testMixin.js

export default {data() {return {};},mounted() {},computed: {},methods: {},
};

  3. 在test.vue中引入mixins文件

此时我们就可以使用testMixin.js中的内容了。当然现在mixin中的内容都是空的,所以下一步是增加testMixin.js中的内容。

Mixins特性:

  1. 生命周期方法重复时合并执行,但混入对象的钩子将在组件自身钩子之前调用。
  2. 变量和方法发生冲突时,优先用组件内部的变量/方法(组件的data、methods、filters会覆盖mixins里的同名data、methods、filters)
  3. mixin可以定义公用的变量或方法,但是mixin中的数据是独立不共享的,即每个组件中的mixin实例都不一样,是单独存在的个体,不存在相互影响;
  4. 不同mixin里的同名方法,按照引进的顺序,最后的覆盖前面的同名方法。

特性1:生命周期方法重复时合并执行,但混入对象的钩子将在组件自身钩子之前调用。

 执行结果:

 特性2:变量和方法发生冲突时,优先用组件内部的变量/方法,(组件的data、methods、filters会覆盖mixins里的同名data、methods、filters)

 运行结果:

 

 

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

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

相关文章

序列化与反序列化

引用DLL文件:Newtonsoft.Json.dll 路径:D:\yonyou\U9CE\Portal\bin\ C#实体类List<Departments> deptss = new List<Departments>();private void Department_Load(object sender, EventArgs e){strUri = TexURI.Text;strToken = GetToken(TexURI.Text);//Depart…

我的第一台电脑

这篇文章是对我的第一台电脑的回忆,大家感兴趣可以看看。【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18032053 出自【进步*于辰的博客】大家在看这篇文章的时候,可能会觉得我跑题了。当然,的确有些跑题。而…

Origin2022安装出现“试用期已结束”的解决方法

有小伙伴反馈,在安装Origin2022中文版出现弹窗:试用期已结束。…… 无法继续安装,这个问题该如何解决呢? origin 2022 中文版解决方法: 1、返回电脑桌面,点击左下角【Win标】按钮,在弹出列表中点击【设置】选项 2、点击【时间与语言】3、将【自动设置时间】点选关闭 …

中电金信:华安保险携手中电金信共研共建,重塑财险核心转型新范式

​引言 随着我国数字经济转型深入推进,保险业作为经济“减震器”和社会“稳定器”的作用愈发凸显,国家相继出台一系列发展规划和指导意见引导着保险业数字化转型走深向实。同时围绕人工智能、大数据、云计算等技术产品层出不穷,如智能语音客服、人脸识别、RPA等,推动保险运…

强大的效率工具:电脑桌面待办清单小工具

在这个快节奏的社会,每一分每一秒都显得弥足珍贵。上班族们每天都在与琐碎的工作任务、繁杂的日程计划打交道,如何提高工作效率,让每一天都充实而有条理呢?这时候,一款高效的待办清单工具就显得尤为重要。 那么有没有一款超强大的效率工具呢?电脑桌面待办清单小工具推荐哪…

Kubernetes 数据存储:从理论到实践的全面指南

本文深入解析 Kubernetes (K8S) 数据存储机制,探讨其架构、管理策略及最佳实践。文章详细介绍了 K8S 数据存储的基础、架构组成、存储卷管理技巧,并通过具体案例阐述如何高效、安全地管理数据存储,同时展望了未来技术趋势。关注【TechLeadCloud】,分享互联网架构、云服务技…

BOSHIDA AC/DC电源模块的基本原理与应用

BOSHIDA AC/DC电源模块的基本原理与应用 AC/DC电源模块是一种将交流电转换为直流电的电子设备,它广泛应用于电子设备、电信设备、工控设备以及家电等领域。本文将介绍AC/DC电源模块的基本原理和应用。 AC/DC电源模块的基本原理是通过整流、滤波和稳压等过程将输入的交流电转换…

错误: 找不到或无法加载主类 XXX类 || jmap -histo:live 2345 | less

今天在学习jvm的时候,想要通过 jmap -histo:live 20368 | less 命令 查看堆中存活对象信息。但是在windows系统中貌似好像不支持这个命令 于是我将自己的程序上传到了Linux系统中,但是经过编译完了之后,运行该class文件的时候,提示:错误: 找不到或无法加载主类 XXX类。 这…

关于idea报错提示Output directory is not specified

报错提示:D:\XXX\src\main\java\com\XXX\XXX\base\BaseApiController.java:11:8java: 写入com.XXX.XXX.base.BaseApiController时出错: Output directory is not specified解决措施: 方法一:检查 Maven 配置 确保 pom.xml 中的 Maven 配置正确设置了输出目录。你可以按照以下…

RPC学习记录

RPC是帮助我们屏蔽网络编程细节,实现调用远程方法就跟调用本地方法一样的体验。 RPC是一个远程调用,需要通过网络来传输数据,并且RPC常用于业务系统之间的数据交互,需要保证其可靠性,所以一般默认采用TCP来传输。网络传输数据必须是二进制的,但是调用方请求的出入参数都是…

ComfyUI使用IC-Light实现打光特效

在线体验 https://huggingface.co/spaces/lllyasviel/IC-Light 国内可以用魔塔 https://modelscope.cn/studios/AI-ModelScope/IC-Light/summaryComfyUI IC-Light 原生插件: https://github.com/huagetai/ComfyUI-Gaffer 模型下载: https://huggingface.co/lllyasviel/ic-lig…

YiShaAdmin:一款基于.NET Core Web + Bootstrap的企业级快速开发框架

前言 今天大姚给大家分享一款基于.NET Core Web + Bootstrap的企业级快速后台开发框架、权限管理系统,代码简单易懂、界面简洁美观(基于MIT License开源,免费可商用):YiShaAdmin。 项目官方介绍 YiShaAdmin 基于.NET Core Web开发,借鉴了很多开源项目的优点,让你开发Web…