vue3 怎么使用$emit
时间: 2023-10-30 22:03:18 浏览: 105
在 Vue 3 中,使用 `$emit` 发送自定义事件的方式与 Vue 2.x 是相似的。以下是使用 `$emit` 的步骤:
1. 在父组件中,使用 `v-on` 或简写的 `@` 监听子组件发出的事件。
2. 在子组件中,使用 `$emit` 方法触发自定义事件。
下面是一个使用 `$emit` 的示例:
```vue
<!-- 父组件 -->
<template>
<div>
<button @click="sendMessage">发送消息</button>
<child-component @message-sent="handleMessage"></child-component>
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
},
methods: {
sendMessage() {
// 触发自定义事件,并传递参数
this.$emit('message-sent', 'Hello, child component!');
},
handleMessage(message) {
console.log('收到子组件的消息:', message);
}
}
}
</script>
```
```vue
<!-- 子组件 -->
<template>
<div>
<button @click="sendReply">回复消息</button>
</div>
</template>
<script>
export default {
methods: {
sendReply() {
// 触发自定义事件,并传递参数
this.$emit('message-sent', 'Hello, parent component!');
}
}
}
</script>
```
在上述示例中,当点击父组件中的按钮时,会触发 `sendMessage` 方法,并通过 `$emit` 发送一个自定义事件 `'message-sent'` 到父组件。父组件监听该事件,并调用 `handleMessage` 方法处理接收到的消息。
在子组件中,当点击子组件中的按钮时,会触发 `sendReply` 方法,并通过 `$emit` 发送一个自定义事件 `'message-sent'` 到父组件。
请注意,父组件只能监听子组件发出的事件,无法直接调用子组件的方法。如果需要在父组件中调用子组件的方法,可以使用 `ref` 引用子组件,然后通过引用来调用方法。
阅读全文