当前位置:首页 > VUE

vue on emit实现

2026-02-19 17:54:33VUE

Vue 中的 $emit 实现

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

基本用法

子组件中通过 $emit 触发事件:

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

父组件中监听子组件触发的事件:

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

示例代码

子组件 (ChildComponent.vue):

<template>
  <button @click="sendMessage">发送消息</button>
</template>

<script>
export default {
  methods: {
    sendMessage() {
      this.$emit('message', 'Hello from child!');
    }
  }
};
</script>

父组件 (ParentComponent.vue):

<template>
  <child-component @message="receiveMessage" />
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: { ChildComponent },
  methods: {
    receiveMessage(msg) {
      console.log(msg); // 输出: Hello from child!
    }
  }
};
</script>

事件验证

Vue 3 中可以通过 emits 选项对事件进行验证:

vue on emit实现

export default {
  emits: {
    'event-name': (payload) => {
      return typeof payload === 'string'; // 验证 payload 类型
    }
  }
};

注意事项

  • 事件名推荐使用 kebab-case 命名(如 my-event
  • 可以通过 $emit 的第二个参数传递多个数据(使用对象包装)
  • Vue 3 中移除了 $on$off 等事件 API,推荐使用 emits 选项

标签: vueon
分享给朋友:

相关文章

vue实现遮罩

vue实现遮罩

Vue 实现遮罩层的方法 在 Vue 中实现遮罩层可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-show 或 v-if 控制显示 通过 Vue 的指令动态控制遮罩层的显示与隐藏。…

vue router 实现

vue router 实现

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

vue实现订单

vue实现订单

Vue 实现订单功能 订单数据结构设计 订单数据通常包含以下字段: order: { id: String, // 订单ID userId: String,…

vue原理实现

vue原理实现

Vue 原理实现的核心机制 Vue.js 的核心原理基于响应式系统、虚拟 DOM 和模板编译。以下是其核心实现机制的分解: 响应式系统 Vue 使用 Object.defineProperty(Vu…

vue 实现树状

vue 实现树状

Vue 实现树状结构的方法 递归组件实现树状结构 递归组件是 Vue 中实现树状结构的常见方法。通过组件自身调用自身,可以轻松构建多层级树状结构。 <template> <ul…

vue实现路径

vue实现路径

Vue 实现路径的方法 在 Vue 中实现路径管理通常涉及 Vue Router 的使用,以下是一些常见的实现方法: 安装 Vue Router 通过 npm 或 yarn 安装 Vue Route…