Vue.js v-on=“$listeners“的使用

在 Vue.js 中,v-on="$listeners" 是一个特殊的语法,用于将父组件传递下来的所有事件监听器绑定到子组件上。这里的 $listeners 是一个对象,包含了父组件传递给子组件的所有事件监听器。
使用 v-on="$listeners" 的好处是,它允许子组件自动绑定所有从父组件传下来的事件监听器,而不需要在子组件中显式地声明和绑定每一个事件。这可以简化代码,并使得组件之间的通信更加灵活。

Parent.vue 的代码:

javascript 复制代码
<template>  
  <div>  
    <child-component @click="handleClick" @dblclick="handleDoubleClick"></child-component>  
  </div>  
</template>  
  
<script>  
import ChildComponent from './Child.vue';  
  
export default {  
  components: {  
    ChildComponent  
  },  
  methods: {  
    handleClick() {  
      console.log('Clicked!');  
    },  
    handleDoubleClick() {  
      console.log('Double clicked!');  
    }  
  }  
};  
</script>

Child.vue 的代码:

javascript 复制代码
<template>  
  <div>  
    <!-- 使用 v-on="$listeners" 自动绑定所有事件监听器 -->  
    <button v-on="$listeners">Click me</button>  
  </div>  
</template>  
  
<script>  
export default {  
  // 无需显式声明和绑定事件  
};  
</script>
Parent.vue 组件传递了两个事件监听器给 Child.vue 组件:@click 和 @dblclick。在 Child.vue 组件中,我们使用 v-on="$listeners" 来自动绑定这两个事件监听器到内部的 button 元素上。这样,当按钮被点击或双击时,相应的处理函数 handleClick 和 handleDoubleClick 会在父组件 Parent.vue 中被调用。
v-on="$listeners" 在创建高阶组件或封装组件时特别有用,因为它允许你创建一个通用的组件,该组件可以接收并转发所有传入的事件监听器,而无需知道具体有哪些事件监听器。
相关推荐
Python大数据分析@13 分钟前
通俗的讲,网络爬虫到底是什么?
前端·爬虫·网络爬虫
不爱学英文的码字机器30 分钟前
[操作系统] 环境变量详解
开发语言·javascript·ecmascript
Lysun00134 分钟前
vue2的$el.querySelector在vue3中怎么写
前端·javascript·vue.js
毛毛三由34 分钟前
【组件分享】商品列表组件-最佳实践
vue.js
jerry-891 小时前
Centos类型服务器等保测评整/etc/pam.d/system-auth
java·前端·github
工业甲酰苯胺1 小时前
深入解析 Spring AI 系列:解析返回参数处理
javascript·windows·spring
小爬菜1 小时前
Django学习笔记(启动项目)-03
前端·笔记·python·学习·django
想要打 Acm 的小周同学呀1 小时前
前端Vue2项目使用md编辑器
前端·编辑器·vue2·markdown 语法
计算机-秋大田1 小时前
基于SSM的家庭记账本小程序设计与实现(LW+源码+讲解)
java·前端·后端·微信小程序·小程序·课程设计
海的预约2 小时前
VUE之路由Props、replace、编程式路由导航、重定向
前端·vue.js·智能路由器