当前位置:首页 > 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 实现跨层级组件通信:

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

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

vue on emit实现

标签: vueon
分享给朋友:

相关文章

vue实现直播

vue实现直播

Vue 实现直播的基本方法 在Vue中实现直播功能通常需要结合第三方直播服务或自建流媒体服务器。以下是几种常见的实现方式: 使用第三方直播SDK 腾讯云直播SDK 安装SDK包:npm…

vue登录业务的实现

vue登录业务的实现

实现登录业务的基本流程 在Vue中实现登录业务通常涉及前端界面设计、表单验证、API请求交互、状态管理以及路由控制等环节。以下是核心实现步骤: 登录表单设计与验证 创建包含用户名和密码输入框的登录…

vue设计与实现目录

vue设计与实现目录

以下是《Vue设计与实现》一书的典型目录结构(根据常见技术书籍及Vue核心内容整理): 响应式系统 响应式数据的基本原理 依赖收集与触发更新 实现简易响应式系统 Proxy与Refle…

vue实现发送值接受值

vue实现发送值接受值

Vue 实现父子组件传值 父组件向子组件传值(props) 父组件通过 v-bind 或简写 : 向子组件传递数据。子组件通过 props 接收数据。 父组件代码: <template&g…

vue调用接口实现退出

vue调用接口实现退出

实现Vue退出功能的步骤 在Vue中调用接口实现退出功能通常需要与后端API交互,以下是实现方法: 前端实现 创建退出方法,调用后端API接口: methods: { logout() {…

vue实现div

vue实现div

Vue 实现 DIV 元素的方法 在 Vue 中实现 DIV 元素可以通过多种方式,以下是几种常见的实现方法: 使用模板语法 在 Vue 的模板中直接使用 HTML 的 <div> 标签…