当前位置:首页 > 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实现双折线图

实现双折线图的步骤 安装必要的依赖库(如 ECharts 或 Chart.js),这里以 ECharts 为例: npm install echarts --save 在 Vue 组件中引入 ECh…

vue实现标签

vue实现标签

Vue 实现标签的方法 在 Vue 中实现标签功能可以通过多种方式完成,以下是几种常见的方法: 使用动态组件 动态组件可以根据不同的条件渲染不同的标签内容。通过 :is 属性动态绑定组件名,实现标签…

vue实现机制

vue实现机制

Vue 实现机制的核心原理 Vue.js 的核心实现机制主要基于响应式系统、虚拟 DOM 和组件化设计。以下是关键实现细节: 响应式系统 Vue 通过 Object.defineProperty(V…

vue实现通讯

vue实现通讯

Vue 组件通讯方法 父子组件通讯 父组件向子组件传递数据通过 props,子组件向父组件传递数据通过 $emit 事件。 父组件模板: <child-component :message=…

轮播vue实现

轮播vue实现

使用 Vue 实现轮播功能 基础轮播实现 安装依赖(如使用 Swiper): npm install swiper vue-awesome-swiper 组件代码示例: <template&…

vue实现导航

vue实现导航

使用 Vue Router 实现导航 Vue Router 是 Vue.js 官方提供的路由管理器,用于构建单页应用(SPA)的导航系统。以下是实现导航的基本步骤。 安装 Vue Router n…