nst*_*ant 7 ref typescript vue.js vue-composition-api
Vetur 在下面这一行下划线 null:
const firstRef = ref<HTMLElement>(null)
Run Code Online (Sandbox Code Playgroud)
没有重载匹配这个调用。 Overload 1 of 3, '(raw: HTMLElement): Ref', 给出了以下错误。 “null”类型的参数不能分配给“HTMLElement”类型的参数。 重载 2 of 3, '(raw: HTMLElement): Ref',出现以下错误。 “null”类型的参数不能分配给“HTMLElement”类型的参数。Vetur(2769)
这是一个浓缩的上下文。任何想法我做错了什么?
<template>
<input id="first" ref="firstRef">
<button type="button" @click.prevent="focusFirst">Focus</button>
</template>
<script lang="ts">
import { defineComponent, ref } from "@vue/composition-api"
export default defineComponent({
name: "Test",
setup() {
const firstRef = ref<HTMLElement>(null)
const focusFirst = () => {
const theField = firstRef.value
theField.focus()
}
return { focusFirst }
}
</script>
Run Code Online (Sandbox Code Playgroud)
As given back by Vetur, you cannot convert a null
type to an HTMLELement
type. A possible way to fix this would be to write:
const firstRef = ref<HTMLElement | null>(null)
Run Code Online (Sandbox Code Playgroud)
However, keep in mind that you'll have to check if firstRef is of type null
every time you want to use it. You could do something like this as well:
if (firstRef.value) {
// do stuff with firstRef
// typescript knows that it must be of type HTMLElement here.
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4640 次 |
最近记录: |