vue2 二次封装element 组件,继承组件原属性,事件,插槽 示例

news2025/6/23 1:25:09

测试页面代码

这里主要记录如何封装element的el-input

并且封装后具有el-input原本的属性 事件 插槽

下面为测试页面即组件调用

<script>
import CustomInput from '@/components/CustomInput.vue';

export default {
    name: 'TestPage',
    components: { CustomInput },
    data() {
        return {
            testInput: 'Hello World'
        }

    },

};
</script>

<template>
    <div style='margin-left: 50px;width: 600px'>
        <!--            测试代码-->
        <CustomInput v-model='testInput' placeholder='Hello World'>
            <template slot='append'>
                <el-button>搜索</el-button>
            </template>
        </CustomInput>
    </div>
</template>

<style scoped lang='scss'>

</style>

组件的封装代码

先看看实际效果和是否生效

在 Vue.js 中,v-bind="$attrs"v-on="$listeners"inheritAttrs: false 是与组件的属性 (props) 和事件监听器相关的选项,它们通常用于自定义组件中以确保父组件传递的所有属性和事件能够正确地应用到子组件上。以下是每个选项的详细解释:

v-bind="$attrs"

  • v-bind="$attrs" 是一个 Vue 指令,用于将父组件传递给子组件的非 prop 属性 (即普通 HTML 属性和自定义属性,但不包括 class 和 style) 绑定到子组件的根 DOM 元素上。
  • 使用 $attrs 变量可以获得父组件传递下来的所有属性 (除了通过 props 定义的属性之外),然后一次性绑定到内部元素上。

v-on="$listeners"

  • v-on="$listeners" 也是一个 Vue 指令,用于添加父组件在子组件上设置的所有事件监听器。
  • $listeners 对象包含了在子组件上侦听的所有事件 (这些事件还没有配置相应的方法或尚未作为 prop 被识别)。使用这个指令可以方便地将所有父组件绑定的事件监听器添加到子组件的根 DOM 元素上。

inheritAttrs: false

  • inheritAttrs: false 是一个组件选项,使得所有的非 prop 属性 (比如 classstyle 等) 不会默认绑定到组件的根 DOM 元素上。
  • 默认情况下,Vue 会将任何不被识别为 prop 的属性自动添加到组件的根元素上。当你不希望建立这种默认行为时(比如你希望手动确定哪些属性应该被添加到哪个元素上),可以设置 inheritAttrs: false

此处为了继承原组件的所有插槽

需要依次声明它们

<template>
    <el-input
        v-bind="$attrs"
    v-on="$listeners"
    :value="inputValue"
    @input="updateValue"
    >
        <!-- 默认插槽 -->
        <slot></slot>
        <!-- 具名插槽 -->
        <slot name="prepend" slot="prepend"></slot>
        <slot name="append" slot="append"></slot>
        <slot name="prefix" slot="prefix"></slot>
        <slot name="suffix" slot="suffix"></slot>
    </el-input>
</template>

<script>
export default {
    name: 'CustomInput',

    // 使用 inheritAttrs: false 选项,避免 attribute 被自动应用到组件根元素上
    inheritAttrs: false,

    props: ['value'], // 如果需要处理 value 属性,需要显式声明

    computed: {
        inputValue: {
            get() {
                return this.value;
            },
            set(value) {
                this.$emit('update:value', value);
            }
        }
    },

    methods: {
        updateValue(value) {
            this.$emit('input', value); // 当输入时触发 input 事件,并将新值通过事件发送给父组件
        }
    }
};
</script>

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

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

相关文章

SpringCloud系列(2)--SpringCloud和SpringBoot技术选型

前言&#xff1a;SpringCloud是微服务架构的一揽子解决方案&#xff0c;SpringBoot是一种技术&#xff0c;要使用SpringCloud&#xff0c;也需要使用到SpringBoot&#xff0c;所以要使用SpringCloud时&#xff0c;必须也要考虑到SpringBoot的适配问题 1、查看SpringCloud和与之…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 4月11日,星期四

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年4月11日 星期四 农历三月初三 1、 中办、国办&#xff1a;加大从优秀社区工作者中招录公务员力度。 2、 即日起&#xff0c;全国铁路实行新的货物列车运行图。 3、 台湾花莲地震死亡人数上升至16人&#xff0c;强震后“地…

在渲染项目instant-ngp使用代码(run.py)实现的补充说明

0 引言 最近&#xff0c;在做一个项目中有需要使用渲染接口&#xff0c;需要使用代码来实现。详细的步骤在文章instant-ngp中run.py的使用_/instant-ngp/./scripts/run.py", line 25, in https://blog.csdn.net/fengbingchun/article/details/129770444?ops_request_misc…

新型[datahelper@onionmail.org].datah 勒索病毒来袭:如何筑起安全防线?

在数字化时代&#xff0c;网络安全问题日益凸显&#xff0c;其中勒索病毒成为了一种非常严重的威胁。[datahelperonionmail.org].datah勒索病毒就是其中的佼佼者&#xff0c;它以其复杂的加密手段和恶劣的勒索行为&#xff0c;给用户带来了巨大的损失。本文将从病毒的运行机制、…

电脑技巧:推荐一款护眼神器小智护眼宝,呵护你的眼睛

目录 一、软件简介 二、软件特点 三、 安装说明 四、使用说明 一、软件简介 小智护眼宝是一款专为广大电脑使用者设计的高效蓝光过滤软件。通过过滤蓝光&#xff0c;它可以有效防止长时间使用电脑对眼睛造成的伤害&#xff0c;保护用户的视力健康。除了基础的护眼功能外&a…

Qt plugin 开发UI界面插件

目录 1.创建接口 2.创建插件 3.创建插件界面 4.插件实现 5.创建应用工程 6.应用插件 1.创建接口 打开QtCreater&#xff0c;点击左上角“文件”->新建文件或项目&#xff0c;在弹窗中选择C/CHeader File。 输入文件名&#xff0c;选好路径&#xff08;可自行设置名称…

Gitlab全量迁移

Gitlab全量迁移 一、背景1.前提条件 一、背景 公司研发使用的Gitlab由于服务器下架需要迁移到新的Gitlab服务器上。Gitlab官方推荐了先备份然后再恢复的方法。个人采用官方的另外一种方法&#xff0c;就写这篇文章给需要的小伙伴参考。 源Gitlab: http://old.mygitlab.com #地…

微服务-网关

在微服务架构中&#xff0c;每个服务都是一个可以独立开发和运行的组件&#xff0c;而一个完整的微服务架构由一系列独立运行的微服务组成。其中每个服务都只会完成特定领域的功能&#xff0c;比如订单服务提供与订单业务场景有关的功能、商品服务提供商品展示功能等。各个微服…

【Linux】tcpdump P3 - 过滤和组织返回信息

文章目录 基于TCP标志的过滤器格式化 -X/-A额外的详细选项按协议(udp/tcp)过滤低详细输出 -q时间戳选项 本文继续展示帮助你过滤和组织tcpdump返回信息的功能。 基于TCP标志的过滤器 可以根据各种TCP标志来过滤TCP流量。这里是一个基于tcp-ack标志进行过滤的例子。 # tcpdump…

使用lv_micropython

想要在ESP32-C3使用Micropython开发GUI&#xff0c;所以需要编译lv_micropython&#xff0c;当前github上的版本是9.1.0。 一、开发环境 因为编译lv_micropython需要在linux系统下&#xff0c;但是我的电脑是windows系统&#xff0c;所以我在windows系统上安装了VMware虚拟机&…

基于GRU实现评论文本情感分析

一、问题建模 在线评论的细粒度情感分析对于深刻理解商家和用户、挖掘用户情感等方面有至关重要的价值&#xff0c;并且在互联网行业有极其广泛的应用&#xff0c;主要用于个性化推荐、智能搜索、产品反馈、业务安全等。此博文&#xff0c;共包含6大类20个细粒度要素的情感倾…

基于SSM+Jsp+Mysql的弹幕视频网站

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

Edge扩展程序上架流程

代码基本同Chrome扩展&#xff0c;无需改动&#xff0c;具体可以参考文档说明 参考官方文档&#xff0c;注册开发者账号&#xff0c;遇到报错可以参考另一篇文章&#xff0c;Microsoft注册问题 注册完毕后&#xff0c;跳转到 developer dashboard&#xff0c;将左侧导航栏选项…

vue快速入门(十六)事件修饰符

注释很详细&#xff0c;直接上代码 上一篇 新增内容 事件修饰符之阻止冒泡事件修饰符之阻止默认行为 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdev…

数据结构速成--顺序表

由于是速成专题&#xff0c;因此内容不会十分全面&#xff0c;只会涵盖考试重点&#xff0c;各学校课程要求不同 &#xff0c;大家可以按照考纲复习&#xff0c;不全面的内容&#xff0c;可以看一下小编主页数据结构初阶的内容&#xff0c;找到对应专题详细学习一下。 目录 一…

蓝桥杯-单片机基础16——利用定时计数中断进行动态数码管的多窗口显示

综合查阅了网络上目前能找到的所有关于此技能的代码&#xff0c;最终找到了下述方式比较可靠&#xff0c;且可以自定义任意显示的数值。 传统采用延时函数的方式实现动态数码管扫描&#xff0c;在题目变复杂时效果总是会不佳&#xff0c;因此在省赛中有必要尝试采用定时计数器中…

ubuntu20挂载webdav

WebDAV 是个好东西&#xff0c;尤其是配个自己的 NAS 使用&#xff0c;熟悉以后就再也离不开它啦 sudo apt-get update sudo apt-get install davfs2 上下左右键可以切换到“是”选项 2.创建目录挂载点 sudo mkdir /mnt/webdav 3.配置 davfs2 编辑 davfs2.conf 文件以配置 da…

KKVIEW远程畅连远程控制对方手机

畅连远程控制对方手机&#xff1a;技术、安全与实用性探讨 随着科技的飞速发展&#xff0c;远程控制技术在多个领域得到了广泛应用。其中&#xff0c;手机远程控制作为一项新兴技术&#xff0c;受到了广泛关注。畅连远程控制作为其中的一种实现方式&#xff0c;为用户提供了便…

【IC前端虚拟项目】验证环境方案思路和文档组织

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 对于mvu的验证环境,从功能角度就可以分析出需要搭建哪些部分,再看一下mvu的周围环境哈: 很明显验证环境必然要包括几个部分: 1.模拟idu发送指令; 2.模拟ram/ddr读写数据; 3.rm模拟mvu的行为; …

【开源社区】openEuler、openGauss、openHiTLS、MindSpore

【开源社区】openEuler、openGauss、openHiTLS、MindSpore 写在最前面开源社区参与和贡献的一般方式开源技术的需求和贡献方向 openEuler 社区&#xff1a;开源系统官方网站官方介绍贡献攻略开源技术需求 openGauss 社区&#xff1a;开源数据库官方网站官方介绍贡献攻略开源技术…