子组件上的调用方法 - 组合 API
Calling method on Child Component - Composition API
我有一个父组件,我需要在其中调用存在于其子组件之一中的方法:
<template>
<div>
<button @click="callChildMethod">
<child-component ref="child" />
</div>
</template>
<script>
setup(props) {
const child = ref(null)
const callChildMethod = () = {
child.doSomething()
}
return {
child,
callChildMethod
}
}
</script>
子组件包含 doSomething
方法:
const doSomething = () => { console.log('calling method....') }
由于我使用的是 VueJS3 和 Composition API,我的方法是使用 template ref 来调用子组件中的方法。显然是行不通的,但我看不出我错过了什么。有人知道这个吗?提前致谢
您缺少 ref
中的值字段,它应该是:
const callChildMethod = () = {
child.value.doSomething()
}
P.s。对于 <script setup>
(合成 API)
需要使用 defineExpose
https://v3.vuejs.org/api/sfc-script-setup.html#defineexpose
父组件:
<script setup>
...
const childred = ref();
childred.value.doSomething()
</script>
<template>
<ChildrenComponent ref="childred" />
</template>
子组件:
<script setup>
...
function doSomething(){
console.log(1);
}
defineExpose({
doSomething,
});
</script>
<template>
<div>123</div>
</template>
我有一个父组件,我需要在其中调用存在于其子组件之一中的方法:
<template>
<div>
<button @click="callChildMethod">
<child-component ref="child" />
</div>
</template>
<script>
setup(props) {
const child = ref(null)
const callChildMethod = () = {
child.doSomething()
}
return {
child,
callChildMethod
}
}
</script>
子组件包含 doSomething
方法:
const doSomething = () => { console.log('calling method....') }
由于我使用的是 VueJS3 和 Composition API,我的方法是使用 template ref 来调用子组件中的方法。显然是行不通的,但我看不出我错过了什么。有人知道这个吗?提前致谢
您缺少 ref
中的值字段,它应该是:
const callChildMethod = () = {
child.value.doSomething()
}
P.s。对于 <script setup>
(合成 API)
需要使用 defineExpose
https://v3.vuejs.org/api/sfc-script-setup.html#defineexpose
父组件:
<script setup>
...
const childred = ref();
childred.value.doSomething()
</script>
<template>
<ChildrenComponent ref="childred" />
</template>
子组件:
<script setup>
...
function doSomething(){
console.log(1);
}
defineExpose({
doSomething,
});
</script>
<template>
<div>123</div>
</template>