当前位置:首页 > VUE

vue on emit实现

2026-01-19 01:31:26VUE

Vue 中 $emit 的实现

在 Vue 中,$emit 是子组件向父组件传递数据的主要方式。通过自定义事件,子组件可以触发父组件中定义的方法并传递数据。

基本用法

子组件中触发事件:

this.$emit('event-name', data);

父组件中监听事件:

<child-component @event-name="handleEvent" />

传递多个参数

子组件可以传递多个参数:

this.$emit('event-name', arg1, arg2, arg3);

父组件通过方法接收:

methods: {
  handleEvent(arg1, arg2, arg3) {
    // 处理参数
  }
}

事件验证

Vue 支持在组件定义中验证事件:

export default {
  emits: {
    'event-name': (payload) => {
      // 返回 true 表示验证通过
      return typeof payload === 'string';
    }
  }
}

与 v-model 集成

自定义组件可以实现 v-model

export default {
  props: ['modelValue'],
  emits: ['update:modelValue'],
  methods: {
    updateValue(value) {
      this.$emit('update:modelValue', value);
    }
  }
}

事件修饰符

可以通过 .native 修饰符监听原生事件:

<child-component @click.native="handleClick" />

事件总线模式

创建全局事件总线:

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

// 组件A
this.$eventBus.$emit('event-name', data);

// 组件B
this.$eventBus.$on('event-name', (data) => {
  // 处理数据
});

注意事项

  • 事件名建议使用 kebab-case 命名
  • 避免在事件名中使用 Vue 保留前缀
  • 大型项目建议使用 Vuex 代替频繁的事件通信
  • 记得在组件销毁前移除事件监听

高级用法

可以结合 provide/inject 实现跨层级组件通信:

vue on emit实现

// 祖先组件
provide() {
  return {
    eventDispatcher: (event, payload) => {
      this.$emit(event, payload);
    }
  }
}

// 后代组件
inject: ['eventDispatcher'],
methods: {
  triggerEvent() {
    this.eventDispatcher('custom-event', data);
  }
}

标签: vueon
分享给朋友:

相关文章

vue实现过程

vue实现过程

Vue 的实现过程 Vue 的实现过程可以分为多个核心模块,包括响应式系统、虚拟 DOM、模板编译等。以下是 Vue 的主要实现过程分析。 响应式系统 Vue 的响应式系统基于 Object.def…

vue router 实现

vue router 实现

Vue Router 的实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的核心实现方式。 安装 Vue Router 通过…

vue实现图册

vue实现图册

Vue实现图册功能 在Vue中实现图册功能通常涉及图片展示、切换、缩放等交互效果。以下是常见的实现方法和关键代码示例: 基础图册组件结构 使用Vue单文件组件构建基础结构: <templat…

vue筛选实现

vue筛选实现

Vue 筛选实现方法 使用计算属性实现筛选 计算属性是 Vue 中实现数据筛选的常用方式。通过定义一个计算属性,可以根据输入的条件动态过滤数据。 <template> <div…

vue实现suspense

vue实现suspense

Vue 3 中实现 Suspense Suspense 是 Vue 3 引入的一个内置组件,用于处理异步依赖的加载状态。它允许在等待异步组件或异步数据加载时显示一个后备内容(fallback),直到异…

vue实现弹幕

vue实现弹幕

Vue 实现弹幕功能 弹幕功能通常包括动态生成、滚动显示、颜色和速度随机化等特性。以下是基于 Vue 3 的实现方法。 核心思路 使用 CSS 动画控制弹幕从右向左滚动。 动态生成弹幕数据,随机设置…