如何解决ts无法识别vue中的$refs
vue中$refs
可能会返回一个vue对象或者是Element
对象,但是typescript并不知道这是个什么玩意儿,怎么解决这个问题呢?
解决办法是我们手动指定其类型,例如有一个ScrollView.vue
组件,我在父组件中引用它。
<template>
<scroll-view ref="scrollView"></scroll-view>
</template>
如下方式引用即可。
import ScrollView from './path/ScrollView.vue'
(this.$refs.scrollView as ScrollView).someMethod()
如果它不是一个Vue对象,而是一个Element
对象的引用的话,可以这样来引用
(this.$refs.drag as HTMLElement).clientWidth
上面是一个办法,还有另一个解决的办法。就是在当前类中声明$refs
所有引用。还是以上面例子中的对象为例。
export default class SomeClass extends Vue {
public $refs!: {
scrollView: ScrollView
}
}
按照这个套路,把当前$refs
所有可能引用到的都声明一下,再引用,ts就能正确识别了。
- 本博客所有文章除特别声明外,均可转载和分享,转载请注明出处!
- 本文地址:https://www.leevii.com/?p=1557
无敌
会显示这个错误,类型“Vue”上不存在属性“someMethod,是怎么回事,谢谢大神了!
首先,你要定义someMethod属性或方法