Vue父组件调用子组件方法----多种写法

Posted 为了2025的桂花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue父组件调用子组件方法----多种写法相关的知识,希望对你有一定的参考价值。

一、父组件中引入子组件

  • 父组件 parent.vue
<template>
    <div>
    <!-- 调用子组件,子组件的全部内容会显示在这个div中 -->
        <Child/>
    </div>
</template>    

<script setup>
// import 子组件的相对路径
import Child from \'./child.vue\' 
</script>
  • 子组件 child.vue
<template>
    <div>我是子组件</div>
</template>
<script>
</script>

二、父组件中调用子组件的方法

1、export default 写法

  • 父组件 parent.vue
<template>
    <div>
        <Button @click="handleClick">点击调用子组件方法</Button>
        <Child ref="child"/>
    </div>
</template>    

<script>
import Child from \'./child\';

export default {
    methods: {
        handleClick() {
               this.$refs.child.$emit("childmethod")    //子组件$on中的名字
        },
    },
}
</script>
  • 子组件 child.vue
<template>
    <div>我是子组件</div>
</template>
<script>
export default {
    mounted() {
        this.$nextTick(function() {
            this.$on(\'childmethods\', function() {
                console.log(\'我是子组件方法\');
            });
        });
     },
};
</script>

2、父组件 setup 写法

  • 父组件 parent.vue
<template>
    <div>
        <Button @click="handleClick">点击调用子组件方法</Button>
        <Child ref="Child"/>
    </div>
</template>    

<script setup>
import Child from \'./child\';

const Child = ref(null)

function handleClick(){
  Child.value.printfunction();
}


</script>
  • 子组件 child.vue
<template>
    <div>我是子组件</div>
</template>
<script>
export default {
    methods() {
        printfunction(){
          console.log(\'我是子组件方法\');
        }  
     },
};
</script>

3、子父组件都用 setup 写法

  • 父组件 parent.vue
<template>
    <div>
        <Button @click="handleClick">点击调用子组件方法</Button>
        <Child ref="Child"/>
    </div>
</template>    

<script setup>
import Child from \'./child\';

const Child = ref(null)

function handleClick(){
  Child.value.printfunction();
}


</script>
  • 子组件 child.vue
<template>
    <div>我是子组件</div>
</template>
<script setup>
  
  function printfunction(){
    console.log(\'我是子组件方法\');
  }  
  
  // 将子组件的方法暴露出去
  defineExpose({
    printfunction
  })
</script>
作者:落花桂
         
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

以上是关于Vue父组件调用子组件方法----多种写法的主要内容,如果未能解决你的问题,请参考以下文章

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

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

VUE3+TS(父子兄弟组件通信)

Vue +父组件调用子组件方法 + 子组件回调父组件方法

Vue +父组件调用子组件方法 + 子组件回调父组件方法

vue 父组件调用子组件的方法,更改子组件的数据