📅  最后修改于: 2023-12-03 15:35:38.139000             🧑  作者: Mango
在Vue 3中,要从另一个组件调用方法,需要使用ref
引用并通过value
属性来访问它,在特定的时机,还需要使用$nextTick
等技巧。
<template>
<div>
<button @click="sayHello">Click me</button>
</div>
</template>
<script>
import { ref } from "vue";
export default {
setup() {
const sayHello = () => {
console.log("Hello!");
};
return {
sayHello,
};
},
};
</script>
现在,假设我们需要从另一个组件中调用sayHello
方法,可以按以下方式实现:
<template>
<div>
<button @click="onClick">Invoke sayHello!</button>
</div>
</template>
<script>
import { ref, onMounted } from "vue";
export default {
setup() {
const componentRef = ref(null);
const onClick = () => {
componentRef.value.sayHello();
};
onMounted(() => {
// 此处等待 DOM 更新后引用
componentRef.value = this.$refs.componentName;
});
return {
onClick,
componentRef
};
},
};
</script>
在这个示例中,我们首先创建了一个ref
来引用我们要调用的组件,然后在onClick
函数中调用该组件的sayHello
方法。我们使用了onMounted
钩子来等待DOM更新,并通过$refs
属于引用组件。谨记,此处需要容忍第一次引用时,该组件的DOM更新可能尚未完成。
现在我们已经掌握了如何从另一个组件中调用方法。当然,这只是示例,具体实现和调用方式仍然要根据具体情况进行判断和调整。
ref
的时候,需要记得通过.value
属性来访问它所引用的对象。$refs
前要确认它是否已经被赋值,否则可能引起null
值的异常。Vue 3使从另一个组件调用方法变得更加简单明了,只需使用ref
和$nextTick
等技巧,可以轻松地在不同组件间交互数据和功能。在实践中,确保使用最佳实践,以确保代码的可读性和健壮性。