当前位置:首页 > VUE

vue事件如何实现

2026-01-19 01:01:37VUE

Vue 事件实现方法

Vue 中事件通过 v-on 指令或 @ 简写实现,支持原生 DOM 事件和自定义事件。

原生 DOM 事件绑定

<button v-on:click="handleClick">点击触发</button>
<!-- 简写形式 -->
<button @click="handleClick">简写点击</button>

方法定义

在 Vue 实例的 methods 中定义事件处理函数:

methods: {
  handleClick(event) {
    console.log('事件触发', event.target);
  }
}

事件修饰符

Vue 提供事件修饰符实现常见功能:

vue事件如何实现

  • .stop:阻止事件冒泡
  • .prevent:阻止默认行为
  • .capture:使用捕获模式
  • .self:仅当事件从元素本身触发时执行
  • .once:事件只触发一次
  • .passive:提升滚动性能
<form @submit.prevent="onSubmit">
  <button @click.stop="doThis">阻止冒泡</button>
</form>

自定义事件

子组件通过 $emit 触发事件,父组件通过 v-on 监听:

// 子组件
this.$emit('custom-event', payload);

// 父组件
<child-component @custom-event="handleCustomEvent" />

事件总线(跨组件通信)

创建全局事件总线:

vue事件如何实现

// main.js
Vue.prototype.$eventBus = new Vue();

// 组件A发送事件
this.$eventBus.$emit('global-event', data);

// 组件B监听事件
this.$eventBus.$on('global-event', data => {
  console.log('接收数据', data);
});

按键修饰符

监听特定按键事件:

<input @keyup.enter="submit" />
<input @keyup.13="submit" /> <!-- 键码方式 -->

系统修饰键

组合键监听:

<button @click.ctrl.exact="onCtrlClick">仅按Ctrl时触发</button>

事件传参

传递额外参数给处理函数:

<button @click="handleClick($event, 'param')">带参数事件</button>

注意事项

  1. 事件处理函数默认接收原生 DOM 事件对象作为第一个参数
  2. 使用 $emit 触发自定义事件时,第二个参数开始为传递的数据
  3. 组件销毁前应移除全局事件监听,避免内存泄漏
  4. .sync 修饰符(Vue 2.x)已由 v-model 参数(Vue 3)替代

分享给朋友:

相关文章

vue底层如何实现

vue底层如何实现

Vue 底层的核心实现机制 Vue 的底层实现主要围绕响应式系统、虚拟 DOM 和组件化架构展开。以下是关键技术的详细解析: 响应式系统 依赖追踪与发布订阅模式 通过 Object.definePr…

vue如何实现默认页面

vue如何实现默认页面

Vue 实现默认页面的方法 在 Vue 项目中,通常需要设置一个默认页面(如首页或登录页)作为用户访问时的初始页面。可以通过路由配置实现。 配置路由默认跳转 在 Vue Router 中,使用 re…

vue事件实现

vue事件实现

Vue 事件实现方法 模板中直接绑定事件 在 Vue 模板中通过 v-on 或 @ 语法直接绑定事件。例如点击事件: <button @click="handleClick">点击触发事…

vue如何实现单选

vue如何实现单选

使用原生 HTML 单选按钮 在 Vue 中可以直接使用 HTML 的原生单选按钮,通过 v-model 绑定数据。 <template> <div> <…

react如何实现混入

react如何实现混入

在React中实现混入(Mixin)功能可以通过以下几种方式实现,React官方已不推荐使用传统的React.createClass混入方式,但可通过高阶组件或自定义Hook替代。 高阶组件(HOC…

h5页面如何实现

h5页面如何实现

实现H5页面的方法 H5页面是基于HTML5技术的网页,通常用于移动端和响应式设计。以下是实现H5页面的关键步骤和技术要点。 基础结构 使用HTML5的DOCTYPE声明作为页面的起始。HTML5简…