vue3中 在script中没有setup的情况下使用 $emit
时间: 2024-03-17 07:44:45 浏览: 164
关于vue中 $emit的用法详解
5星 · 资源好评率100%
在 Vue 3 中,如果你的组件中没有使用 `setup`,而是使用了 `data`、`methods` 和 `computed` 等选项来定义组件,那么你可以通过 `this.$emit` 来触发父组件中的事件。
例如,假设你有一个父组件 `Parent.vue` 和一个子组件 `Child.vue`,子组件中有一个按钮,点击该按钮时需要向父组件发送一个事件,你可以按照以下步骤进行操作:
1. 在 `Parent.vue` 中定义一个事件处理函数,例如:
```vue
<template>
<div>
<Child @child-click="handleChildClick" />
</div>
</template>
<script>
export default {
methods: {
handleChildClick() {
console.log('Child button clicked');
}
}
}
</script>
```
2. 在 `Child.vue` 中使用 `$emit` 触发父组件中的事件:
```vue
<template>
<button @click="handleClick">Click me</button>
</template>
<script>
export default {
methods: {
handleClick() {
this.$emit('child-click');
}
}
}
</script>
```
在上述代码中,`this.$emit('child-click')` 会触发一个名为 `child-click` 的事件,并传递到父组件中。父组件中的 `handleChildClick` 方法会被调用,并在控制台中输出一条消息。
注意,在使用 `$emit` 时,事件名应该使用 kebab-case(短横线命名法),而不是 camelCase(驼峰命名法)。因此,在子组件中,你应该使用 `this.$emit('child-click')` 而不是 `this.$emit('childClick')`。
阅读全文