Vue 2 混入

混入(Mixins)是一种在Vue组件中重用代码的方式。它允许你定义一些可复用的选项对象,然后将这些选项合并到不同的组件中。混入可以用于在多个组件之间共享逻辑、方法、生命周期钩子等。

示例:

<!DOCTYPE html>
<html><head><title>Vue mixin demo</title><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head><body><div id="app"><my-component></my-component></div><script>// 定义一个混入对象const myMixin = {data() {return {message: 'Hello from mixin!'}},methods: {greet() {console.log(this.message)}}}Vue.component('my-component', {mixins: [myMixin],template: '<div>{{message}}</div>',created() {this.greet()}})var vm = new Vue({el: '#app',});</script>
</body></html>

选项合并

当组件和混入对象的选项同名时,数据对象data中同名选项以组件的优先,进行递归合并;同名钩子函数则会被合并为数组,它们都会执行,且混入对象的钩子函数先执行。

对于methods、components、directives这些值为对象的选项,同名键的合并例子如下:

<!DOCTYPE html>
<html><head><title>Vue mixin demo</title><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head><body><div id="app"></div><script>const mixin = {methods: {greet() {console.log('Hello from Mixin!');},sayHello() {console.log('Mixin says hello!');},}};var Component = Vue.extend({methods: {greet() {console.log('Hello from extend!');},sayHello() {console.log('extend says hello!');},sayGoodbye() {console.log('extend says goodbye!');}}});new Component({mixins: [mixin],methods: {greet() {console.log('Hello from component!');},},created() {this.greet();        // Output: Hello from component!this.sayHello();     // Output: Mixin says hello!this.sayGoodbye();   // Output: extend says goodbye!}});</script>
</body></html>

由上面得出选项合并优先级:new Component > mixins > Vue.extend。


全局混入

全局混入会影响每一个Vue实例

使用Vue.mixin({})方法创建全局混入。

尽量避免使用全局混入,这样会导致逻辑分散、代码难以阅读、维护困难


自定义选项合并策略

下面是一个示例:

const customMergeStrategies=Vue.config.optionMergeStrategies
customMergeStrategies.customOption=function(parentVal,childVal){if(!childVal) return parentValif(!parentVal) return childVal//合并逻辑,可根据需要修改return parentVal.concat(childVal)
}

关键是了解Vue.config.optionMergeStrategies的作用,它用于帮助我们自定义某个选项的合并策略函数,该函数第一个参数是父组件的该选项值,第二个参数是子组件的该选项值。

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

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

相关文章

Golang文件操作详解

打开和关闭文件 从 Go 1.16 开始,现在提供了相同的功能 通过包 IO 或包操作系统,以及这些实现 应该在新代码中首选。 有关详细信息,请参阅特定函数文档。 弃用了"io/ioutil"对文件的操作 读取文件方法一(os.open+file.read只读形式): os.Open() 函数能够打开…

LeetCode 面试题 01.03. URL化

文章目录 一、题目二、C# 题解 一、题目 URL化。编写一种方法&#xff0c;将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符&#xff0c;并且知道字符串的“真实”长度。&#xff08;注&#xff1a;用Java实现的话&#xff0c;请使用字符数组实现&…

clickhouse扩缩容

一、背景 我们之前已经学会了搭建clickhouse集群&#xff0c;我们搭建的是一套单分片两副本的集群&#xff0c;接下来我们来测试下clickhouse的扩缩容情况 二、扩容 扩容相对来说比较简单&#xff0c;我们原来的架构如下 hostshardreplica192.169.1.111192.169.1.212 现在…

学习笔记整理-JS-几种创建对象的方式

文章目录 一、几种创建对象的方式 一、几种创建对象的方式 // 1. 字面量模式 const userA {name: JonA,age: 18 }// 2. Object 构造函数模式 const userB new Object({name: JonB,age: 19 })// 3. 自定义构造函数模式 function UserC() {this.name JonC,this.age 20 } con…

指定或降低Rust 工具链的版本

要更改 Rust 工具链的版本&#xff0c;您可以使用以下命令之一&#xff1a; rustup default stable&#xff1a;使用 stable 版本的 Rust 工具链作为默认版本。rustup default beta&#xff1a;使用 beta 版本的 Rust 工具链作为默认版本。rustup default nightly&#xff1a;使…

WSL2 Ubuntu子系统安装cuda+cudnn+torch

文章目录 前言一、安装cudn二、安装cudnn三、安装pytorch 前言 确保Windows系统版本高于windows10 21H2或Windows11&#xff0c;然后在Windows中将显卡驱动升级到最新即可&#xff0c;WSL2已支持对显卡的直接调用。 一、安装cudn 进入英伟达官网中的cuda下载地址&#xff1…

ansible剧本之role角色模块

role角色 一&#xff1a;Roles 模块1.roles 的目录结构&#xff1a;2.roles 内各目录含义解释3.在一个 playbook 中使用 roles 的步骤&#xff1a;&#xff08;1&#xff09;创建以 roles 命名的目录&#xff08;2&#xff09;创建全局变量目录&#xff08;可选&#xff09;&am…

MAC QT开发攻略

文章目录 基础步骤安装QT、QTCreator安装CMakeNinja 安装Clion编译器在QTCreator中新建项目更改CMake生成器 导入Clion CMake生成文件 基础步骤 安装QT、QTCreator 安装CMake 由于clion需要使用cmake构建 Ninja Ninja下载 安装Clion编译器 Clion 2023.1.3 破解版安装教程…

AI项目二:基于mediapipe的虚拟鼠标控制

若该文为原创文章&#xff0c;转载请注明原文出处。 一、项目介绍 由于博主太懒&#xff0c;mediapipe如何实现鼠标控制的原理直接忽略&#xff0c;最初的想法是想控制摄像头识别手指控制鼠标&#xff0c;达到播放电影的效果。基本上效果也是可以的。简单的说是使用mediapipe检…

UVa247 Calling Circles(Floyd warshall算法)

题意 给定两个人相互打电话&#xff0c;如果a打给b,b打给c,c打给a&#xff0c;则说a,b,c在同一电话圈中。给出n个人的m次通话&#xff0c;输出所有的电话圈 思路 用graph[u][v]1表示u和v之间有打电话。在使用floyd算法计算所有的点对之间的值。graph[u][v]1表示u,v之间有直接…

《TCP IP网络编程》第十八章

第 18 章 多线程服务器端的实现 18.1 理解线程的概念 线程背景&#xff1a; 第 10 章介绍了多进程服务端的实现方法。多进程模型与 select 和 epoll 相比的确有自身的优点&#xff0c;但同时也有问题。如前所述&#xff0c;创建&#xff08;复制&#xff09;进程的工作本身会…

Go 1.21新增的 slices 包详解(一)

Go 1.21新增的 slices 包提供了很多和切片相关的函数&#xff0c;可以用于任何类型的切片。 slices.BinarySearch 定义如下&#xff1a; func BinarySearch[S ~[]E, E cmp.Ordered](x S, target E) (int, bool) 在已经排好序的切片&#xff08;切片必须按递增顺序排序&…

“深入解析JVM:揭秘Java虚拟机的工作原理“

标题&#xff1a;深入解析JVM&#xff1a;揭秘Java虚拟机的工作原理 摘要&#xff1a;本文将深入解析Java虚拟机&#xff08;JVM&#xff09;的工作原理&#xff0c;探讨其内部结构和运行机制。我们将介绍JVM的组成部分、类加载过程、内存管理、垃圾回收、即时编译等关键概念&…

Redis专题-秒杀

Redis专题-并发/秒杀 开局一张图&#xff0c;内容全靠“编”。 昨天晚上在群友里看到有人在讨论库存并发的问题&#xff0c;看到这里我就决定写一篇关于redis秒杀的文章。 1、理论部分 我们看看一般我们库存是怎么出问题的 其实redis提供了两种解决方案&#xff1a;加锁和原子操…

k8s 常见面试题

前段时间在这个视频中分享了 https://github.com/bregman-arie/devops-exercises 这个知识仓库。 这次继续分享里面的内容&#xff0c;本次主要以 k8s 相关的问题为主。 k8s 是什么&#xff0c;为什么企业选择使用它 k8s 是一个开源应用&#xff0c;给用户提供了管理、部署、扩…

C++笔记之左值与右值、右值引用

C笔记之左值与右值、右值引用 code review! 文章目录 C笔记之左值与右值、右值引用1.左值与右值2.右值引用——关于int&& r 10;3.右值引用——对比int&& r 10;和int& r 10;4.右值引用&#xff08;rvalue reference&#xff09;的概念 1.左值与右值 2.…

Kubernetes(K8s)从入门到精通系列之十七:minikube启动K8s dashboard

Kubernetes K8s从入门到精通系列之十七:minikube启动K8s dashboard 一、安装minikube的详细步骤二、查看Pod三、启动dashboard四、创建代理访问dashboard五、远程访问dashboard一、安装minikube的详细步骤 Kubernetes(K8s)从入门到精通系列之十六:linux服务器安装minikube的详…

Spark MLlib机器学习库(一)决策树和随机森林案例详解

Spark MLlib机器学习库(一)决策树和随机森林案例详解 1 决策树预测森林植被 1.1 Covtype数据集 数据集的下载地址&#xff1a; https://www.kaggle.com/datasets/uciml/forest-cover-type-dataset 该数据集记录了美国科罗拉多州不同地块的森林植被类型&#xff0c;每个样本…

2021年12月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:统计指定范围里的数 给定一个数的序列S,以及一个区间[L, R], 求序列中介于该区间的数的个数,即序列中大于等于L且小于等于R的数的个数。 时间限制:1000 内存限制:65536 输入 第一行1个整数n、,分别表示序列的长度。(0 < n ≤ 10000) 第二行n个正整数,表示序列里…

Qt 编译使用Bit7z库接口调用7z.dll、7-Zip.dll解压压缩常用Zip、ISO9660、Wim、Esd、7z等格式文件(一)

bit7z一个c静态库&#xff0c;为7-zip共享库提供了一个干净简单的接口 使用CMAKE重新编译github上的bit7z库&#xff0c;用来解压/预览iso9660&#xff0c;WIm&#xff0c;Zip,Rar等常用的压缩文件格式。z-zip库支持大多数压缩文件格式 导读 编译bit7z(C版本)使用mscv 2017编译…