【发布时间】:2020-06-25 00:27:28
【问题描述】:
我正在设置一个 ref 并像这样输入它:
const audioElem = useRef<HTMLAudioElement>();
然后当我这样使用它时:
<audio ref={audioElem}></audio>
它会导致这个错误:
(JSX 属性) ClassAttributes.ref?: string | (((实例:HTMLAudioElement | null)=> void)| React.RefObject
并像这样使用:
audioElem.current.style.border = '2px solid red';
导致此错误:
(属性) MutableRefObject
.当前: HTMLAudioElement | undefined Object 可能是“未定义”。
我怎样才能摆脱这些错误?
【问题讨论】:
-
考虑添加
if statement以检查current是否有值或将其放入useEffect -
您使用的是什么版本的打字稿?如果在分配给元素之前创建并使用了 ref,则可以未定义
current属性。虽然if检查可以确保current未被定义,但更优雅的方法是使用optional-chaining3.7 及更高版本。这看起来像audioElem.current?.style.border = '2px solid red';
标签: reactjs typescript