簡體   English   中英

類型“從不”上不存在屬性“單擊”。 TS2339

[英]Property 'click' does not exist on type 'never'. TS2339

根據關於 TypeScript 此類錯誤的其他類似問題(關於問題#44147937#40796374 ),我發現分配null來創建狀態或引用會導致此問題: Property ... does not exist on type 'never'

如何在此示例組件中處理此問題?

const FooComponent: FunctionComponent<FooInterface> = () => {

    const myRef = useRef(null)

    const handleClickOnButton = () => myRef?.current?.click();

    return (
       <div>
           <div ref={myRef} />
           <button onClick={handleClickOnButton} />
       </div>
}

TypeScript 無法從您稍后在代碼中使用它的位置推斷 ref 的類型,您必須告訴它 ref 的類型:

const ref = useRef<HTMLDivElement>(null);
// −−−−−−−−−−−−−−−^^^^^^^^^^^^^^^^

useRefnull類型添加到您提供的類型參數中,因此您不必使用<HTMLDivElement | null> 。)

我找到了解決這個問題的方法。

<HTMLAnchorElement>賦予 useRef 將解決此問題:

  const linkRef = useRef<HTMLAnchorElement>(null);

重要提示:我必須使用 null 來創建這種類型的 ref 以傳遞給元素,因此無法更改它。

重要提示:分配<HTLMDivElement><HTMLElement>將導致另一個錯誤:

TS2322:類型“RefObject”不可分配給類型“Ref | 不明確的'。 類型“RefObject”不可分配給類型“RefObject”。 “HTMLElement”類型缺少“HTMLAnchorElement”類型中的以下屬性:字符集、坐標、下載、hreflang 等 21 個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM