当前位置:首页 > VUE

vue on emit实现

2026-01-19 01:31:26VUE

Vue 中 $emit 的实现

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

基本用法

子组件中触发事件:

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

父组件中监听事件:

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

传递多个参数

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

vue on emit实现

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

vue on emit实现

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 实现跨层级组件通信:

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

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

标签: vueon
分享给朋友:

相关文章

vue实现aop切面

vue实现aop切面

Vue 实现 AOP 切面编程的方法 在 Vue 中实现 AOP(面向切面编程)可以通过多种方式,以下是几种常见的实现方法: 使用 Vue 混入(Mixins) Vue 的混入机制可以用于实现横切关…

vue实现绑卡的原理

vue实现绑卡的原理

Vue 实现绑卡的原理 Vue 实现绑卡功能通常涉及前端表单处理、数据绑定、验证以及和后端 API 的交互。以下是实现绑卡功能的核心原理和步骤: 数据绑定与表单处理 Vue 通过 v-model 指…

vue实现视窗

vue实现视窗

Vue 实现视窗功能 在 Vue 中实现视窗功能通常涉及监听浏览器窗口大小变化、响应式布局或创建自定义弹窗组件。以下是几种常见实现方式: 监听浏览器窗口大小变化 使用 Vue 的 mounted 和…

vue   实现单选

vue 实现单选

Vue 实现单选功能 在 Vue 中实现单选功能可以通过多种方式,以下是几种常见的方法: 使用原生 <input type="radio"> 绑定 v-model 通过 v-model…

vue实现星星

vue实现星星

实现星星评分的Vue组件 使用Vue实现星星评分功能可以通过组件化方式完成,以下是一个完整的实现方案: 模板部分 <template> <div class="star-ra…

vue实现visual

vue实现visual

Vue 实现可视化(Visual)的常见方法 在 Vue 中实现可视化通常涉及数据可视化库的集成,以下是几种主流方案: 使用 ECharts ECharts 是一个强大的 JavaScript…