【vue3】vue3在父组件中调用子组件中定义的methods

本文详细介绍了Vue3中子组件setup方法的两种不同写法,包括直接在<script>标签内书写和独立return方法。针对每种写法,解释了如何暴露和访问子组件的方法,并提供了父组件调用子组件方法的实例。强调了在使用setup时需要注意的定义ref和调用时机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先要区分子组件的setup的写法:

  • 写法1:子组件的setup写在<script>标签上面,这样写的话,在父组件中引用子组件时,ts会报红,提示子组件没有被export,我讨厌报红,所以一般子组件我不这样写setup
// child.vue
<script lang="ts" setup>
import { defineExpose } from 'vue
const drawchart= () => {
	...
}
defineExpose({
	drawchart, 
})
<script>

注意:这样使用setup时,一定要用defineExpose暴露一下drawchart方法,否则父组件中根本拿不到

  • 写法2:子组件的setup是单独写的,要return的
// child.vue
<script lang="ts">
	name: 'child',
	setup() {
		const drawchart= () => {
			...
		}
		
		return {
			drawchart,
		}
	}
</script>

注意:return就类似于上面的defineExpose,drawchart方法已经被暴露出来了,可以直接获取到

以下是父组件调用子组件中定义的methods:
父组件:

<template>
	<div id="wrap">
		// 子组件
		<requestLine ref="request_line" />
	</div>
</template>
<script lang="ts" setup>
import requestLine from './requestLine.vue'		// 引入子组件, vue3不需要在components中注册组件,直接引入即可

const request_line = ref(null)		// 注意ref定义的名称不能跟组件名一样,会报错

// request_line .value的值只有在onMounted或者nextTick里面才能拿到
onMounted(() => {
	// 调用子组件中的方法
	request_line .value.drawchart()
})
</script>

*获取变量的写法和methods一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值