vue3中emit怎么使用
时间: 2024-03-09 21:47:21 浏览: 95
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
在 Vue 3 中,emit 的使用方式与 Vue 2 中略有不同。具体步骤如下:
1. 在组件中,定义一个事件处理函数,使用 `this.$emit` 触发一个自定义事件。
2. 在组件的模板中,使用 `@` 或 `v-on:` 指令来监听该自定义事件,并指定一个事件处理函数。
下面是一个示例:
```html
<template>
<button @click="handleClick">点击触发事件</button>
</template>
<script>
import { defineComponent } from 'vue'
export default defineComponent({
methods: {
handleClick() {
// 触发一个自定义事件
this.$emit('my-event', 'hello world')
}
}
})
</script>
```
在上面的代码中,我们定义了一个名为 `my-event` 的自定义事件,并在 `handleClick` 方法中使用 `this.$emit` 触发该事件,并传递了一个参数 `'hello world'`。
接下来,在父组件中监听该事件,并定义一个事件处理函数:
```html
<template>
<div>
<child-component @my-event="handleEvent"></child-component>
</div>
</template>
<script>
import { defineComponent } from 'vue'
export default defineComponent({
methods: {
handleEvent(arg) {
console.log(arg) // 输出 'hello world'
}
}
})
</script>
```
在上面的代码中,我们使用 `@my-event` 指令来监听子组件触发的 `my-event` 事件,并指定了一个事件处理函数 `handleEvent`。当子组件触发该事件时,该事件处理函数会被调用,并接收到子组件传递过来的参数 `'hello world'`。
注意:在 Vue 3 中,`$emit` 不再支持传递一个事件对象。如果需要传递多个参数,可以将它们封装在一个对象中,然后将该对象作为 `$emit` 的第二个参数传递。例如:
```js
// 触发一个自定义事件,并传递多个参数
this.$emit('my-event', { arg1: 'hello', arg2: 'world' })
```
```html
<!-- 监听自定义事件,并接收多个参数 -->
<child-component @my-event="handleEvent"></child-component>
<script>
methods: {
handleEvent({ arg1, arg2 }) {
console.log(arg1, arg2) // 输出 'hello' 'world'
}
}
</script>
```
希望能帮助到你!
阅读全文