我的父组件有一个名为的子组件,并向其传递了引用:
<child
ref="childRef"
/>
现在,我想从父组件运行子组件内部的函数,如下所示:
mounted() {
(this.$refs.childRef as any).testFunction();
}
当然,它对任何类型都能正常工作,但是我如何设置正确的类型来运行这个函数呢?
如果使用组件本身的类型:
(this.$refs.childRef as Child).testFunction();
它仍然表示testFunction
属性在类型'Vue'上不存在。
我使用Vue.js2版本。
我的子组件:
@Component({})
export default class Child extends Mixins(CustomMixin) {
testFunction() {
console.log('test');
}
}
编辑:我还发现了这个解决方案来运行函数:
(this.$refs.childRef as Child & { testFunction:() => void }).testFunction();
它用方法testFunction()
更新Child类型,它实际上是有效的,尽管我不知道这是不是一个好方法。
3条答案
按热度按时间r9f1avp51#
您的代码看起来很好,它应该可以正常工作,因为子组件
ref
只包含子组件的示例。以下是代码片段。请查看并交叉检查您的代码,以找出根本原因。演示链接:https://jsfiddle.net/w6bjso78/
ve7v8dk22#
到目前为止,这是我找到的解决方案:
虽然我不知道这是不是一个干净的方法,但它可以工作。它用一个void方法
testFunction
更新Child类型。qvtsj1bj3#
我用这个解决了这个问题:
您可以阅读更多详细信息there。