我正在尝试将 useRef
与 TypeScript 一起使用,但遇到了一些问题。
使用我的 RefObject
(我假设)我需要访问 current
。 (即 node.current
)
我试过以下
const node: RefObject<HTMLElement> = useRef(null);
const node = useRef<HTMLElement | null>(null);
但是当我去设置 ref
我总是被告知 X is not assignable to type 'LegacyRef<HTMLDivElement> | undefined'.
return <div ref={ node }>{ children }</div>
编辑:这不应该限于任何一种类型的元素,所以不仅仅是 HTMLDivElement | HTMLFormElement | HTMLInputElement
编辑:这应该作为一个例子
import React, { useRef, RefObject } from 'react';
function Test()
{
// const node = useRef(null);
// const node: RefObject<HTMLElement> = useRef(null);
const node = useRef<HTMLElement | null>(null);
if (
node &&
node.current &&
node.current.contains()
){ console.log("current accessed")}
return <div ref={ node }></div>
}
原文由 FamousAv8er 发布,翻译遵循 CC BY-SA 4.0 许可协议
只需导入 React:
我做了一个更新。使用
HTMLDivElement
作为通用参数,而不是HTMLElement | null
。此外,contains
需要一个参数。更新
useRef
需要 DOM 元素类型的通用参数。您不需要使用| null
因为RefObject
已经知道current
可能为空。看下一个类型:
TS 和 React 足够聪明,可以确定您的 ref 可能为空