组件二次封装

server/2025/2/21 10:05:28/

基于ui组件库的二次封装

对组件进行二次封装主要有以下几个原因:

  1. 提高复用性:通过封装通用组件,可以在多个地方复用,减少代码重复,提高开发效率。
  2. 统一风格和规范:确保所有使用该组件的地方都遵循统一的风格和规范,提升项目的整体质量。
  3. 扩展功能:可以在现有的组件基础上添加新的功能或行为,而不需要修改原始组件。
  4. 简化使用:简化组件的使用方式,减少父组件中的代码量。
  5. 解耦:将组件的实现细节与业务逻辑解耦,使得代码更易于维护和扩展。
  6. 适应性:更容易地适应不同的项目需求和设计变化。

组件封装的方法或思想

1.属性和事件的传递

属性的传递:

使用$attrs而不是使用props进行数据传递,

使用$listeners传递事件

2.封装的组件也可以像 ui组件库那样使用插槽拓展功能

3.获取组件的属性或方法等

在组件中用ref把属性或方法提升到实例中,

示例

javascript"><template><div><el-input v-bind="$attrs" ref="inp" v-on="$listeners"><template v-for="(value, name) in $slots" #[name]="slotData"><slot :name="name" v-bind="slotData"></slot></template></el-input></div>
</template>
<script>
export default {data() {return {}},created() {console.log(this.$attrs)},mounted() {const entries = Object.entries(this.$refs.inp)// console.log(entries);//把ui组件的方法和属性提升到实例当中,父组件可以用ref获取获取这些方法和属性for (const [key, value] of entries) {this[key] = value}}
}
</script>
javascript"><template><div id="app"><MyForm placeholder="请输入内容" v-model="data" ref="myinp" @focus="handleClick"> </MyForm></div>
</template><script>
import MyForm from './components/MyForm.vue'export default {name: 'App',components: {MyForm},data() {return {data: ''}},mounted(){console.log("111",this.$refs.myinp.value);    this.$refs.myinp.value.focus()},methods:{handleClick(){console.log('22222');}}
}
</script>

http://www.ppmy.cn/server/169528.html

相关文章

查看cmd下python的安装路径 + Windows 命令行添加环境变量和不重启刷新环境变量

1、查看cmd下python的安装路径 cmd ----》输入“python” 命令 ---》输入 import sys; print(sys.executable) 即可看到当前系统python的安装路径&#xff1a; 注&#xff1a;系统所使用的python实际上就是在系统环境变量下配置的python目录。 2、刷新path命令&#xff1a;在c…

Debezium:实时数据捕获与同步的利器

一、什么是 Debezium Debezium 是一个开源的分布式平台&#xff0c;专门用于捕获数据库中的数据变更。它通过读取数据库的事务日志&#xff0c;能够以非侵入性的方式捕获数据库中发生的所有变化&#xff0c;并将这些变化转化为事件流&#xff0c;实时推送到像 Kafka 这样的消息…

从入门到精通:Postman 实用指南

Postman 是一款超棒的 API 开发工具&#xff0c;能用来测试、调试和管理 API&#xff0c;大大提升开发效率。下面就给大家详细讲讲它的安装、使用方法&#xff0c;再分享些实用技巧。 一、安装 Postman 你能在 Postman 官网&#xff08;https://www.postman.com &#xff09;下…

[生活杂项][运动教程]自由泳

https://v.youku.com/v_show/id_XMzgzMjkwMzg0MA.html?spma2h0k.11417342.soresults.dtitle https://v.youku.com/v_show/id_XMzgxNjM2NjY4NA.html?spma2h0k.11417342.soresults.dtitle

鸿蒙-状态管理V2

目录 前言综述ComponentV2ObservedV2和TraceLocalParamOnceEventMonitorComputed 前言 前面我们讲了状态管理V1相关装饰器和注意事项&#xff0c;一般来讲是足够在开发中使用了&#xff0c;但还是有一些不方便的地方&#xff0c;因此又有了状态管理 V2。 截止到现在&#xff0…

OkHttp工具类

OkHttpUtil <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp

【含文档+PPT+源码】基于微信小程序的猎兔汽车保养维修美容服务平台的设计与实现

项目介绍 本课程演示的是一款基于微信小程序的猎兔汽车保养维修美容服务平台的设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部…

在高流量下保持WordPress网站的稳定和高效运行

随着流量的不断增加&#xff0c;网站的稳定和高效运行变得越来越重要&#xff0c;特别是使用WordPress搭建的网站。流量过高时&#xff0c;网站加载可能会变慢&#xff0c;甚至崩溃&#xff0c;直接影响用户体验和网站正常运营。因此&#xff0c;我们需要采取一些有效的措施&am…