Vue3父子组件相互调用方法
admin 阅读: 2024-03-29
后台-插件-广告管理-内容页头部广告(手机) |
下面演示均为使用 setup 语法糖的情况!
参考网址:https://cn.vuejs.org/api/sfc-script-setup.html#defineexpose
一、父组件调用子组件方法
子组件需要使用defineExpose对外暴露方法,父组件才可以调用!
1.子组件
- <div>我是子组件div>
- <script lang="ts" setup>
- // 第一步:定义子组件的方法
- const hello = (str: string) => {
- console.log('子组件的hello方法执行了--' + str)
- }
- // 第二部:暴露方法
- defineExpose({
- hello
- })
- script>
2.父组件
- <button @click="getChild">触发子组件方法button>
- <Child ref="childRef">Child>
- <script lang="ts" setup>
- import { ref } from 'vue';
- import Child from '../../components/child.vue';
- // 二:定义与 ref 同名变量
- const childRef = ref ()
- // 三、函数
- const getChild = () => {
- // 调用子组件的方法或者变量,通过value
- childRef.value.hello("hello world!");
- }
- script>
3.测试结果
二、子组件调用父组件方法
1.父组件
- <Child @sayHello="handle">Child>
- <script lang="ts" setup>
- import Child from '../../components/child.vue';
- const handle = () => {
- console.log('子组件调用了父组件的方法')
- }
- script>
2.子组件
- <view>我是子组件view>
- <button @click="say">调用父组件的方法button>
- <script lang="ts" setup>
- const emit = defineEmits(["sayHello"])
- const say = () => {
- emit('sayHello')
- }
- script>
3.测试结果
今天的分享就到这里啦~~
如有错误,欢迎随时雅正。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |