Vue组件:混入

news2024/9/21 21:38:03

1、基本用法

混入是一种为组件提供可复用功能的非常灵活的方式。混入对象可以包含任意的组件选项。当组件使用混入对象时,混入对象中的所有选项将被混入该组件本身的选项中。

语法格式如下:

<script>
//第一步:引用 mixin 对象
import { userMixin } from '@/mixins/UserMixin.js';

export default {
    //第二步:使用 mixin 对象
    mixins: [userMixin]
}
</script>

 

2、选项合并

(1)当组件和混入对象包含同名选项时,这些选项将以适当的方式合并。例如,数据对象在内部会进行递归合并,在和组件的数据发生冲突时组件数据优先。

(2)值为对象的选项,如:methods、computed 和 components 等,在合并时将被合并为同一个对象。如果两个对象的键名冲突,则取组件对象的键值对。

(3)同名钩子函数将混合为一个数组,因此都会被调用。另外,混入对象的钩子会先进行调用,组件自身的钩子会后进行调用。

3、综合实例

【实例】创建两个组件,这两个组件有相同的数据、方法、生命周期钩子,使用组件的混入方式实现功能。执行结果如下图:

(1)在项目中创建 mixins 目录,并创建 UserMixin.js 脚本文件

// 定义一个 mixin 对象,复用的公共代码
export const userMixin = {
    //数据
    data() {
        return {
            userModel: {
                userName: '',
                blogName: '',
                blogUrl: ''
            }
        }
    },
    //方法
    methods: {
        loadData: function () {
            this.userModel.userName = 'pan_junbiao的博客';
            this.userModel.blogName = '您好,欢迎访问 pan_junbiao的博客';
            this.userModel.blogUrl = 'https://blog.csdn.net/pan_junbiao';
        }
    },
    //生命周期钩子
    beforeCreate: function () {
        console.log("beforCreate");
    },
    created: function () {
        console.log("created");
    },
    beforeMount: function () {
        console.log("beforeMount");
    },
    mounted: function () {
        console.log("mounted");
    },
    beforeUpdate: function () {
        console.log("beforeUpdate");
    },
    updated: function () {
        console.log("updated");
    }
}

(2)创建 ComponentA.vue 组件,并引入和使用混入

<template>
    <fieldset>
        <legend>组件A</legend>
        <p>用户名称:{{ userModel.userName }}</p>
        <p>博客信息:{{ userModel.blogName }}</p>
        <p>博客地址:{{ userModel.blogUrl }}</p>
        <button @click="loadData">加载数据</button>
    </fieldset>
</template>

<script>
//第一步:引入 mixin 对象
import { userMixin } from '@/mixins/UserMixin.js';

export default {
    //第二步:使用 mixin 对象
    mixins: [userMixin]
}
</script>

<style scoped>
fieldset {
    font-size: 18px;
    color: red;
    margin-bottom: 20px;
}
</style>

(3)创建 ComponentB.vue 组件,并引入和使用混入

<template>
    <fieldset>
        <legend>组件B</legend>
        <p>用户名称:{{ userModel.userName }}</p>
        <p>博客信息:{{ userModel.blogName }}</p>
        <p>博客地址:{{ userModel.blogUrl }}</p>
        <button @click="loadData">加载数据</button>
    </fieldset>
</template>

<script>
//第一步:引入 mixin 对象
import { userMixin } from '@/mixins/UserMixin.js';

export default {
    //第二步:使用 mixin 对象
    mixins: [userMixin]
}
</script>

<style scoped>
fieldset {
    font-size: 18px;
    color: blue;
    margin-bottom: 20px;
}
</style>

(4)在 App.vue 根组件中引入两个组件

<template>
  <!-- 第三步:使用组件 -->
  <ComponentA></ComponentA>
  <ComponentB></ComponentB>
</template>

<script>
//第一步:引用组件
import ComponentA from '@/components/ComponentA.vue';
import ComponentB from '@/components/ComponentB.vue';

export default {
  //第二步:注册组件
  components: {
    ComponentA,
    ComponentB
  }
}
</script>

 

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

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

相关文章

为什么说AI产业落地,下一代超级应用是“智能体”?

“未来超级应用方向就是AI Agent&#xff0c;ChatGPT很了不起、很强大&#xff0c;但与Agent不一样。AI Agent时代的到来&#xff0c;不会是一个神奇而强大的模型突然代替了所有的工作流&#xff0c;涉及到技术、工程与市场的不断磨合&#xff0c;最终以超预期的服务呈现给人类…

LED会议一体机开启超微小间距COB高清显示在会议系统中的新乐章

在当今数字化、信息化高速发展的时代&#xff0c;会议系统作为企业沟通、决策的重要平台&#xff0c;其显示技术的革新正以前所未有的速度推动着会议体验的飞跃。LED会议一体机&#xff0c;作为这一领域的佼佼者&#xff0c;特别是当其融合了超微小间距COB&#xff08;Chip On …

Transformer:自然语言处理领域的革命性神经网络架构

创作不易&#xff0c;您的打赏、关注、点赞、收藏和转发是我坚持下去的动力&#xff01; Transformer 是一种革命性的神经网络架构&#xff0c;最初由 Vaswani 等人在 2017 年的论文《Attention is All You Need》中提出。它主要用于自然语言处理&#xff08;NLP&#xff09;任…

组合模式composite

学习笔记&#xff0c;原文链接 https://refactoringguru.cn/design-patterns/composite 将对象组合成树状结构&#xff0c; 并且能像使用独立对象一样使用它们。组合最主要的功能是在整个树状结构上递归调用方法并对结果进行汇总。 可以把各种形状组合到一个CompoundShape类中…

Kotlin入门实用开发技巧与注意事项

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 Kotlin&#xff0c;这门由 JetBrains 开发的现代编程语言&#xff0c;自 2017 年被 Google 宣布为 Android 官方开发语言以来&#xff0c;便迅速…

第二个VUE项目(服务端带mysql数据库)

一、序言 第一个vue只有前端的羡慕部署成功后&#xff0c;立马想试试带数据库的了&#xff0c;于是在gitee上搜索了一下&#xff0c;带着试试的心里做了一次尝试&#xff0c;半天就部署完了&#xff0c;当真还是很兴奋。虽然没有改什么代码&#xff0c;但是熟悉了这整个环境&am…

用面向对象的方法进行数据分析

项目从两个不同类型的文件&#xff08;文本文件和 JSON 文件&#xff09;读取销售数据&#xff0c;将其封装为 Record 对象&#xff0c;合并数据后&#xff0c;统计每天的销售总额&#xff0c;并通过 pyecharts 库生成一个包含每日销售额的柱状图&#xff08;Bar chart&#xf…

day10-配置文件日志多线程

一、配置文件 1.1 properties配置文件 properties配置文件 特点:1、都只能是键值对2、键不能重复3、文件后缀一般是.properties结尾的 ​ Properties这是一个Map集合&#xff08;键值对集合&#xff09;&#xff0c;但是我们一般不会当集合使用主要用来代表属性文件&#xff0…

基于UDP的简易网络通信程序

目录 0.前言 1.前置知识 网络通信的大致流程 IP地址 端口号&#xff08;port&#xff09; 客户端如何得知服务器端的IP地址和端口号&#xff1f; 服务器端如何得知客户端的IP地址和端口号&#xff1f; 2.实现代码 代码模块的设计 服务器端代码 成员说明 成员实现 U…

今天讲点简单的:进制1

啊&#xff0c;哈喽&#xff0c;小伙伴们&#xff0c;大家好。我是#Y清墨&#xff0c;今天呐&#xff0c;我要介绍的是二进制。 导语 好久不见&#xff0c;今天来玩些简单的——二进制。 一.初步认识 十进制是逢十进一&#xff0c;那么&#xff0c;顾名思义&#xff0c;二进制…

完整的数仓能力,ByConity 1.0 版本发布!

文章来源&#xff5c;ByConity 开源社区 项目地址&#xff5c;https://github.com/ByConity/ByConity 2024年8月&#xff0c;ByConity 1.0 正式发布&#xff0c;翻开了 ByConity 新的一页。1.0 版本有哪些不同&#xff0c;以及 1.x 版本会重点迭代哪些能力&#xff0c;下面为大…

【NVMe SSD寄存器、数据结构】NVMe Controller 重要寄存器、SSD内部跟NVMe相关的重要数据结构解析

前言 NVMe Controller会将一些重要的信息&#xff08;NVMe控制器的能力&#xff0c;状态&#xff0c;Admin SQ, CQ地址等&#xff09;直接放在NVMe寄存器中&#xff0c;另一部分&#xff08;跟SSD比较相关的&#xff09;信息会放置在SSD内部&#xff0c;并最终通过Admin NVMe …

C:题目介绍

一、算天数 1.题目&#xff1a; kiki向获得某年某月有多少天&#xff0c;请帮他编程实现。输入年份和月份&#xff0c;计算这一年这个月有多少天。 输入描述&#xff1a; 多组输入&#xff0c;一行有两个整数&#xff0c;分别表示年份和月份&#xff0c;用空格分隔。 输出…

Python 从入门到实战13(字符串简介)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们通过举例学习了流程控制语句中的循环语句。今天继续讨…

【机器学习】--- 逻辑回归算法

目录 逻辑回归基础1. 概述2.优点与缺点 逻辑回归的理论解释1.问题背景2. S i g m o i d Sigmoid Sigmoid函数3.决策边界4.损失函数 正则化1.L1正则化2.L2正则化 逻辑回归基础 1. 概述 逻辑回归是机器学习的一种分类算法&#xff0c;主要运用于二分类问题。将线性回归的结果&a…

day-52 三数之和

思路 双指针&#xff1a;确定最小的那个数&#xff08;i0<i<nums.length-2&#xff09;&#xff0c;剩下两个数可以利用双指针的思想。当最小的那个数大于零时&#xff0c;可以直接返回&#xff0c;因为后面的不可能还有满足题意的组合。 解题过程 为了所有满足题意的组…

async、await、promise异步操作详解

一、async、await、Promise使用介绍 当然&#xff01;在 TypeScript 中&#xff0c;Promise 的使用可以涉及多个方面&#xff0c;包括基础用法、类型系统、异步操作的错误处理以及高级用法等。下面我会详细讲解这些内容。 1. Promise 的基本概念 Promise 是一种用于处理异步操…

StorageSync数据缓存API

uni.setStorageSyncs参数:将 data 存储在本地缓存中指定的 key 中&#xff0c;会覆盖掉原来该 key 对应的内容&#xff0c;这是一个同步接口。 uni.setStorageSync函数里面写两个参数,分别是key和值,两个参数名称可以随便取,如果有同名的key,那么后面key的值会覆盖掉前面key的值…

git cz 规范化 git commit 格式

git cz 规范化 git commit 格式 npm install git-cz --save-devnpm install commitizen --save-devnpm install cz-customizable --save-dev // 这是package.json自动生成的 "config": {"commitizen": {"path": "./node_modules/cz-custo…

《OpenCV计算机视觉》—— 图像金字塔

文章目录 什么是图像金字塔&#xff1f;一、定义与基本原理二、主要类型三、构建过程四、应用领域 图像金字塔中的下采样和上采样一、下采样&#xff08;Downsampling&#xff09;二、上采样&#xff08;Upsampling&#xff09;三、总结 代码实现 什么是图像金字塔&#xff1f;…