封装一个vue3的公共组件

在Vue 3中,封装公共组件的场景包括但不限于以下几种情况:

  • 重复使用的组件:如果你发现某个组件在多个地方重复使用,那么将其封装成公共组件是很有意义的。比如,页面中的各种表单控件(输入框、下拉框、日期选择器等)经常可以被封装成公共组件。

  • 业务无关的通用组件:当有一些组件是业务无关的,并且可以在不同的项目中重复使用时,将其封装成公共组件。比如各种Loading、提示框、消息提示等。

  • 复杂组件的拆分:有些复杂的组件可以被拆分成若干公共组件,每个公共组件承担不同的责任,这样做不但提高了可维护性,也方便了代码的重用。

  • 提高可维护性:封装公共组件可以提高代码的可维护性和可读性。通过组件封装,将业务逻辑和UI组件分离,使得代码结构更加清晰。

  • 标准化UI风格:封装公共组件有助于保持一致的UI风格。例如,如果你希望所有的表单输入框都具有相同的风格和交互行为,那么可以封装一个通用的表单输入框组件。

这里使用的场景是重复使用的组件:定义一个公共的快递组件选择,首先在项目的src下面定义一个文件夹components,然后在里面创建文件ExpressList.vue。
在这里插入图片描述
ExpressList.vue文件里面的代码

<template>
    <div class="expressValue-list">
        <el-select v-model="expressValue" class="w-220" placeholder="请选择" @change="changeExpress">
            <el-option label="全部" value="" v-if="isAll" />
            <el-option v-for="(item, index) in expressList" :key="item.id" :value="isId ? item.id : item.code" :label="item.name" />
        </el-select>
    </div>
</template>
<script setup >
import { onBeforeMount, ref, watch } from "vue" 
const expressList = ref([])
const props = defineProps({
    listValue: [String, Number],
    isId: {
        default: false,
        type: Boolean
    }, //是否需要id传默认false
    isAll: {
        default: false,
        type: Boolean
    },//是否开启查找全部功能,默认false
    //可以加其它任何根据项目需要的条件,上面的只是举例
})
const emits = defineEmits(['update:listValue']);
const expressValue = computed({
    get: () => { return props.listValue },
    set: newVal => emits('update:listValue', newVal)
});
const changeExpress = (value) => {
    expressValue.value = value
}
//这里真实项目掉接口获取
const getExpress = () => { 
    expressList.value =    [
        {
            "id": "1",
            "code": "YD",
            "name": "韵达速递",
        },
        {
            "id": "2",
            "code": "ZTO",
            "name": "中通快递",
        },
        {
            "id": "3",
            "code": "SF",
            "name": "顺丰速运",
        },
        {
            "id": "4",
            "code": "YTO",
            "name": "圆通速递",
        },
        {
            "id": "5",
            "code": "YZPY",
            "name": "邮政快递包裹",
        },
        {
            "id": "6",
            "code": "STO",
            "name": "申通快递",
        },
        {
            "id": "7",
            "code": "JD",
            "name": "京东快递",
        },
        {
            "id": "8",
            "code": "EMS",
            "name": "EMS",
        },
        {
            "id": "9",
            "code": "HTKY",
            "name": "百世快递",
        },
        {
            "id": "10",
            "code": "JTSD",
            "name": "极兔速递",
        },
        {
            "id": "11",
            "code": "DNWL",
            "name": "丹鸟",
        },
        {
            "id": "12",
            "code": "EMS",
            "name": "邮政电商标快",
        },
        {
            "id": "13",
            "code": "SF",
            "name": "顺丰快运",
        }
    ]
}
onBeforeMount(() => {
    getExpress()
})
</script>

<style lang="scss" scoped>
.expressValue-list {
.w-220{
	width:220px;
}
</style>

到这里一个基础的下拉选择快递的公共组件模版就完成了,最后那么在项目里面怎么使用呢???
向下面这样使用

//父组件
<template>
    <div class="page">
      <ExpressList v-model:listValue="express" :isAll="true"/>
    </div>
</template>
 //express就是双向 绑定的选择下拉框的值
 //isAll=ture ,开启全部查找的功能

最后看截图
在这里插入图片描述
注 :因为公共组件会在项目里面多次使用,所以可以全局注册组件,这样就不用在项目里面再次引入路径链接了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

梵宁教育春日主题大奖赛

梵宁教育春日主题大赛正式拉开帷幕&#xff0c;我们诚挚邀请各位同学积极参与&#xff0c;用你们的创意和才华诠释春天的魅力。 本次大赛以春日为主题&#xff0c;参赛作品形式多样&#xff0c;包括海报设计和剪辑创作。我们鼓励同学们发挥想象力&#xff0c;将春天的美好瞬间、…

Golang和Java的对决:从设计理念到工具链的全面比较

文章目录 使用率排名Golang和Java设计理念语法和类型系统并发处理资源消耗生态系统和工具链 结语 使用率排名 据最新的2024年3月 Tiobe 编程语言排行榜&#xff0c;目前 Golang 的使用率排名为第8呈上升趋势&#xff0c;Java 的使用率排名为第4呈下降趋势 2024年3月2023年3月…

Go——函数

一. 函数定义 1.1 特点 无需声明原型支持不定变参支持多返回值支持命名返回参数支持匿名函数和闭包函数也是一种类型&#xff0c;一种函数可以赋值给变量不支持嵌套&#xff0c;一个包不能有两个名字一样的函数不支持重载不支持默认参数 1.2 函数声明 函数声明包含一个函数名&…

谈谈考研数学几个常见误区

25考研数学&#xff0c;一定一定要吃透基础&#xff0c;练好计算 我之所以要强调这个&#xff0c;是因为现在的考研数学&#xff0c;越来越重视基础和计算的考察&#xff0c;题海战术已经过时&#xff0c;如果想要有效的提升自己&#xff0c;要进行针对性的学习。我去年考研的…

【.NET全栈】.NET全栈学习路线

一、微软官方C#学习 https://learn.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/ C#中的数据类型 二、2021 ASP.NET Core 开发者路线图 GitHub地址&#xff1a;https://github.com/MoienTajik/AspNetCore-Developer-Roadmap/blob/master/ReadMe.zh-Hans.md 三、路线…

常州威雅:「西陵氏奖学金」项目,只为寻找优秀的你!

栀子花开&#xff0c;凤凰花落&#xff0c;又是一年中考季。站在深耕“全人教育”的第十年&#xff0c;常州威雅现今面向全社会的优秀初三学子&#xff0c;首次推出「西陵氏奖学金」项目&#xff0c;助力梦想起航。 西陵氏女嫘祖&#xff0c;华夏文明的奠基人。她所发现、发明的…

Flutter iOS上架指南

本文探讨了使用Flutter开发的iOS应用能否上架&#xff0c;以及上架的具体流程。苹果提供了App Store作为正式上架渠道&#xff0c;同时也有TestFlight供开发者进行内测。合规并通过审核后&#xff0c;Flutter应用可以顺利上架。但上架过程可能存在一些挑战&#xff0c;因此可能…

VMware虚拟机三种网络模式配置

vmware有三种网络工作模式&#xff1a;Bridged&#xff08;桥接模式&#xff09;、NAT&#xff08;网络地址转换模式&#xff09;、Host-Only&#xff08;仅主机模式&#xff09;。 1. 打开网络编辑器&#xff08;编辑 --> 虚拟网络编辑器&#xff09; 在主机上有VMware Ne…

提效5倍,传统零售企业实时数据分析策略与应用实践

国家统计局数据显示&#xff0c;在过去的 2023 年里&#xff0c;中国社会消费品零售额整体增长稳定&#xff0c;零售业态消费开始恢复性增长。 同时&#xff0c;随着移动互联网的持续爆发增长&#xff0c;零售市场的竞争仍日益激烈。传统零售企业不仅要面对来自其他传统零售商的…

C++ 中的 vector 的模拟实现【代码纯享】

文章目录 C 中的 vector 模拟实现1. vector 的基本概念2. vector 的基本操作3. vector 的模拟实现4.代码纯享5. 总结 C 中的 vector 模拟实现 在 C 中&#xff0c;vector 是一个非常重要的容器&#xff0c;它提供了动态数组的功能。在本篇博客中&#xff0c;我们将尝试模拟实现…

结构体,联合体,枚举( 2 )

目录 2.联合体 2.1联合体类型的声明 2.2联合体的特点 2.3联合体的内存大小 3.枚举 3.1枚举类型的声明 3.2枚举类型的优点 3.3枚举类型的使用 2.联合体 联合体&#xff08;Union&#xff09;是另一种复合数据类型&#xff0c;它允许我们在同一内存位置存储不同的数据类型…

携程获取景点详情 API 返回值说明,item_get_scenic-获取景点详情

xiecheng.item_get_scenic 请求示例&#xff0c;API接口接入Anzexi58 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_sea…

AI预测福彩3D第25弹【2024年4月2日预测--第6套算法开始计算第2次测试】

今天&#xff0c;咱们进行第6套算法测试&#xff0c;本套算法将结合012路直选共27种组合&#xff0c;同时考虑了对012路的和值进行统计分析。今天为第2次测试&#xff0c;好了&#xff0c;废话不多说了。直接上结果~ 仍旧是分为两个方案&#xff0c;1大1小。 经过人工神经网络计…

使用minikube安装使用单机版K8S(docker)

前置&#xff1a;作为一个开发&#xff0c;工作之余想玩一下k8s&#xff0c;但是搭建成本太高&#xff0c;所以就找到了minikube这个工具&#xff0c;快速搭建单机版k8s&#xff0c;下面是个人搭建流程&#xff0c;基于centos7&#xff0c;仅供参考。 1.下载kubectl&#xff0…

[强推] 免费AI学习资料丨学习完还能获得微软证书,太香了!

五分钟白嫖一张微软学习证书 &#x1f4c5; 重要日期&#xff1a; &#x1f680; 开始&#xff1a;2024年4月1日 &#x1f51a; 结束&#xff1a;2024年5月1日 如何参与&#xff1a; &#x1f517; 挑战链接&#xff1a;立即参与 &#x1f4c3; 提交表格&#xff1a;提交…

智慧公厕:提升城市公卫管理效率与环境舒适度的利器

公厕作为城市基础设施的重要组成部分&#xff0c;一直以来备受市民们的关注与诟病。然而&#xff0c;随着科技的发展和城市智慧化进程的推进&#xff0c;智慧公厕作为一种集成了物联网等技术的创新型公厕逐渐走入人们的视野。智慧公厕不仅实现了信息化、数字化和智慧化&#xf…

ATFX汇市:小非农ADP数据来袭,将为周五大非农提供前瞻指引

ATFX汇市&#xff1a;今日20:15&#xff0c;美国自动数据处理公司将公布美国3月ADP就业人数&#xff0c;前值为增加14万人&#xff0c;预期值增加14.8万人。上图为美国ADP数据的历史表现&#xff0c;最近七个月&#xff0c;新增就业人口的柱线呈现出显著震荡特征&#xff0c;最…

VPN——GRE

1、VPN概念 Virtual Private Network ①虚拟专用网络 ②在公有的网络上架设私有的通道&#xff0c;构建一个专用的、安全性、服务质量得到保障的网络 ③实质&#xff1a;数据包的再封装与解封装的过程 2、分类 按照业务用途&#xff1a;【1】access&#xff1a;外出员工…

【Go】十七、进程、线程、协程

文章目录 1、进程、线程2、协程3、主死从随4、启动多个协程5、使用WaitGroup控制协程退出6、多协程操作同一个数据7、互斥锁8、读写锁9、deferrecover优化多协程 1、进程、线程 进程作为资源分配的单位&#xff0c;在内存中会为每个进程分配不同的内存区域 一个进程下面有多个…

Emacs之解除comment-region绑定C-c C-c快捷键(一百三十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…