vue3+ts子组件调用父组件方法
时间: 2023-10-13 14:16:06 浏览: 95
在 Vue3 中,可以使用 `emits` 属性来向父组件发送事件。具体步骤如下:
1. 在父组件中定义一个方法,例如 `parentMethod()`,用于处理子组件发来的事件。
2. 在子组件中通过 `$emit` 方法触发事件,例如 `$emit('custom-event')`。
3. 在父组件中通过在模板中绑定事件监听器来调用该方法,例如 `@custom-event="parentMethod"`。
示例代码:
父组件:
```html
<template>
<div>
<child-component @custom-event="parentMethod" />
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
import ChildComponent from './ChildComponent.vue'
export default defineComponent({
components: { ChildComponent },
methods: {
parentMethod() {
console.log('Parent method called')
}
}
})
</script>
```
子组件:
```html
<template>
<button @click="$emit('custom-event')">Click me</button>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
export default defineComponent({
emits: ['custom-event']
})
</script>
```
在子组件中,我们使用了 `emits` 属性来声明 `custom-event` 事件。这样做可以让 TypeScript 在编译时检查我们触发的事件是否正确。
在父组件中,我们定义了 `parentMethod` 方法来处理子组件触发的事件,然后在模板中绑定事件监听器 `@custom-event="parentMethod"`。
阅读全文