• 【Vue】组件封装小技巧 — 利用$listener和v-on接收父组件传递的事件


    Vue.js中进行二次封装组件时,$listener是一个非常有用的工具,它允许你轻松地传递父组件的事件监听器到内部元素。

    什么是二次封装组件

    二次封装组件是指将一个已存在的组件包装在一个自定义组件中,以添加额外的功能、样式或逻辑,同时保留原始组件的核心功能。这种方式使你能够创建更加通用和可定制的组件,适应不同的需求。

    问题与解决方案

    当你进行二次封装组件时,你通常会遇到一个问题:如何正确地将父组件的事件监听器传递到内部元素?在不了解$listener的情况下,你可能会使用$emit来手动触发父组件的事件,但这种方式有时会变得复杂和冗长。这就是$listener派上用场的地方。

    使用$listener传递事件监听器

    Vue.js提供了$listener属性,它是一个包含了父组件的事件监听器的对象。通过使用$listener,你可以将这些事件监听器直接传递给内部元素,而不需要手动触发事件。

    以下是如何使用$listener的示例:

    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这个示例中,我们有一个内部按钮和一个自定义按钮组件。我们使用v-bind="$attrs"来将父组件的属性传递给自定义按钮,同时使用v-on="$listeners"将父组件的事件监听器传递给自定义按钮。这样,自定义按钮就能够直接响应父组件的事件,而不需要手动触发。

    自定义按钮组件

    自定义按钮组件(CustomButton)的模板如下:

    
    
    • 1
    • 2
    • 3

    在自定义按钮组件中,我们使用$listeners对象来监听父组件传递的事件。这里的事件名称是'custom-click',这与父组件中定义的事件名称相匹配。这使得自定义按钮能够响应父组件的事件,而不需要了解事件的具体细节。

    结语

    在Vue.js中,使用$listener可以使二次封装组件更加灵活和强大。它允许你轻松地将父组件的事件监听器传递给内部元素,而无需手动触发事件。这提高了组件的可重用性和可定制性,使你能够更容易地构建符合各种需求的通用组件。

  • 相关阅读:
    eyb:创建邮件发送消息到员工账套功能实现(五)
    呈现高效的软件测试技术 助力软件研发提升10倍质量
    drawio都能做那些事情和模板示例
    开源框架面试之Dubbo面试题
    2022夏暑假每日一题(七)
    Vue3 按需引入 Element Plus
    P1281 书的复制
    佳博打印机打印条码和二维码的方法
    vivado产生报告阅读分析13-时序报告9
    【汽修帮手】数据采集,爬虫,根据pdf文件流合并pdf文件
  • 原文地址:https://blog.csdn.net/qq_44632227/article/details/134282251