vue3获取子组件方法
时间: 2023-11-29 14:47:36 浏览: 157
在Vue 3中,获取子组件的方法与Vue 2类似,可以使用`ref`来获取子组件的实例。以下是获取子组件方法的示例代码:
1. 在父组件中定义一个方法,通过`$refs`获取子组件实例并调用子组件方法:
```html
<template>
<div>
<child ref="childRef"></child>
<button @click="getChildData">获取子组件数据</button>
</div>
</template>
<script>
import Child from './Child.vue';
export default {
components: {
Child
},
methods: {
getChildData() {
const childInstance = this.$refs.childRef;
childInstance.getChildData();
}
}
}
</script>
```
2. 在子组件中定义一个`ref`,并将子组件实例传递给父组件:
```html
<template>
<div>
<p>{{ childData }}</p>
</div>
</template>
<script>
export default {
data() {
return {
childData: '子组件数据'
}
},
mounted() {
this.$emit('getChildInstance', this);
},
methods: {
getChildData() {
console.log(this.childData);
}
}
}
</script>
```
3. 在父组件中监听子组件的`getChildInstance`事件,获取子组件实例并保存到父组件中:
```html
<template>
<div>
<child ref="childRef" @getChildInstance="getChildInstance"></child>
<button @click="getChildData">获取子组件数据</button>
</div>
</template>
<script>
import Child from './Child.vue';
export default {
components: {
Child
},
data() {
return {
childInstance: null
}
},
methods: {
getChildInstance(child) {
this.childInstance = child;
},
getChildData() {
this.childInstance.getChildData();
}
}
}
</script>
```
阅读全文