vue3 setup语法糖下父组件如何调用子组件

 更新时间:2024年03月04日 11:11:49   作者:左直拳  
这篇文章主要介绍了vue3 setup语法糖下父组件如何调用子组件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue3 setup语法糖下父组件调用子组件

vue3下,父组件调用子组件的方法,如果使用了<script setup> 这种写法,那么子组件方法需要采用defineExpose()进行修饰,才能被外界调用。

上代码:

1、子组件

_pop.vue:

<template>
	。。。
</template>

<script setup>
	import { defineExpose } from "vue";
	
	const popIt = () => {
		。。。
	};
	defineExpose({ popIt });
</script>

2、父组件

<template>
	<pop pTitle="hehe" ref="pop1"></pop>
</template>

<script setup>
	import pop from "./_pop";

	const pop1 = ref();
	pop1.value.popIt();
</script>

vue3 父子组件相互调用

下面演示均为使用 setup 语法糖的情况!

参考网址:https://cn.vuejs.org/api/sfc-script-setup.html#defineexpose

父组件调用子组件方法

子组件需要使用defineExpose对外暴露方法,父组件才可以调用!

1.子组件

<template>
	<div>我是子组件</div>
</template>
 
<script lang="ts" setup>
	// 第一步:定义子组件的方法
	const hello = (str: string) => {
		console.log('子组件的hello方法执行了--' + str)
	}
	// 第二部:暴露方法
	defineExpose({
		hello
	})
</script>

2.父组件

<template>
	<button @click="getChild">触发子组件方法</button>
	<!-- 一:定义 ref -->
	<Child ref="childRef"></Child>
</template>
 
<script lang="ts" setup>
	import { ref } from 'vue';
	import Child from '../../components/child.vue';
 
	// 二:定义与 ref 同名变量
	const childRef = ref <any> ()
 
	// 三、函数
	const getChild = () => {
		// 调用子组件的方法或者变量,通过value
		childRef.value.hello("hello world!");
	}
</script>

3.测试结果

子组件调用父组件方法

1.父组件

<template>
	<Child @sayHello="handle"></Child>
</template>
 
<script lang="ts" setup>
	import Child from '../../components/child.vue';
 
	const handle = () => {
		console.log('子组件调用了父组件的方法')
	}
</script>

2.子组件

<template>
	<view>我是子组件</view>
	<button @click="say">调用父组件的方法</button>
</template>
 
<script lang="ts" setup>
	const emit = defineEmits(["sayHello"])
 
	const say = () => {
		emit('sayHello')
	}
</script>

3.测试结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue2+SpringBoot实现数据导出到csv文件并下载的使用示例

    Vue2+SpringBoot实现数据导出到csv文件并下载的使用示例

    本文主要介绍了Vue2+SpringBoot实现数据导出到csv文件并下载,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-10-10
  • 浅析vue如何实现手机横屏功能

    浅析vue如何实现手机横屏功能

    在项目开发中有时候需求需要手动实现横屏功能,所以这篇文章主要为大家详细介绍了如何使用Vue实现手机横屏功能,需要的小伙伴可以参考一下
    2024-03-03
  • 如何在在Vue3中使用markdown 编辑器组件

    如何在在Vue3中使用markdown 编辑器组件

    vue3发布正式版不久,生态还没完全发展起来,目前支持vue3的开源markdown编辑器组件基本上也寥寥无几,向大家推荐一个很好用的v-md-editor 组件,组件功能很强大,文档也比较详细。该文章只介绍组件的常用功能,更多高级的功能可以参考官方文档。
    2021-05-05
  • vue项目中使用this.$confirm解析

    vue项目中使用this.$confirm解析

    这篇文章主要介绍了vue项目中使用this.$confirm方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 详解VUE Element-UI多级菜单动态渲染的组件

    详解VUE Element-UI多级菜单动态渲染的组件

    这篇文章主要介绍了VUE Element-UI多级菜单动态渲染的组件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Vue实现textarea固定输入行数与添加下划线样式的思路详解

    Vue实现textarea固定输入行数与添加下划线样式的思路详解

    这篇文章主要介绍了使用Vue实现textarea固定输入行数与添加下划线样式的思路详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • vue父组件向子组件传递多个数据的实例

    vue父组件向子组件传递多个数据的实例

    下面小编就为大家分享一篇vue父组件向子组件传递多个数据的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Element实现动态增加多个输入框并校验

    Element实现动态增加多个输入框并校验

    本文主要介绍了Element实现动态增加多个输入框并校验,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • VUE+Canvas 实现桌面弹球消砖块小游戏的示例代码

    VUE+Canvas 实现桌面弹球消砖块小游戏的示例代码

    这篇文章主要介绍了VUE+Canvas 实现桌面弹球消砖块小游戏,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • web网页上实现录音功能(vue3组件示例)

    web网页上实现录音功能(vue3组件示例)

    在Vue项目或网页上实现文字转换成语音播放功能,通常涉及到语音合成技术,这篇文章主要介绍了web网页上实现录音功能(vue3组件示例)的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-06-06

最新评论