首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue3父组件调用子组件方法

Vue3父组件调用子组件方法
EN

Stack Overflow用户
提问于 2022-09-15 04:04:09
回答 2查看 102关注 0票数 0

我不能在Vue3中调用父组件中的子组件方法

在Vue2中,我可以像这样调用子组件方法

代码语言:javascript
复制
this.$root.$refs.ChildComponent.methodName()

但是在Vue3中,我收到这样一个错误

代码语言:javascript
复制
runtime-core.esm-bundler.js:218 Uncaught TypeError: Cannot read properties of undefined (reading 'methodName')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-15 05:18:43

您可能希望将一个道具传递给子对象,并通过调用该方法来对更改事件作出反应。这可能是这样的:

代码语言:javascript
复制
<!-- Parent.vue -->
<script setup>
/* declare invokeChildMethod */
</script>

<template>
  <Child :prop="invokeChildMethod" /> 
</template>

从下面的代码中可以看到,当变量(此处称为invokeChildMethod)发生变化(在父变量中)时,将触发子变量的事件。

Here's a resource on watching props in Vue3

票数 0
EN

Stack Overflow用户

发布于 2022-09-15 12:06:39

defineExpose可以施展魔法。你可以这样做:

代码语言:javascript
复制
// in Parent
<template>
<ChildComponent ref="myChild"/>
</template>

<script>
const myChild = ref(null);

function() {
  myChild.childMethod();
}

</script>
代码语言:javascript
复制
// ChildComponent
<template> ... </template>
<script setup>

function childMethod() {
 // do something
}    

defineExpose({
        childMethod
    });
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73725505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档