簡體   English   中英

反應 TS - 類型 '() =&gt; Promise<void> ' 不可分配給類型 'EventHandler<clickevent, boolean | void> '</clickevent,></void>

[英]React TS - Type '() => Promise<void>' is not assignable to type 'EventHandler<ClickEvent, boolean | void>'

我有一個組件,它有onClick道具。

我正在向它傳遞一個異步處理程序,並收到錯誤:

類型 '() => Promise' 不可分配給類型 'EventHandler<ClickEvent, boolean | 無效>'。 類型“Promise”不可分配給類型“boolean | 空白'。 類型“Promise”不可分配給類型“void”.ts(2322)

代碼

onClick={async () => {
        await item.onClick();
        menuRenderParams.closeMenu();
      }}

我嘗試使用命名處理程序_onClick並指定返回類型,但它不起作用。

在使用命名處理程序時,我嘗試提供如下處理程序類型: _onClick: EventHandler但收到此錯誤:

通用類型“EventHandler”需要 1 個類型參數。

我四處尋找 typescript promise 處理程序類型,但沒有找到任何東西。

  • 旁注,我在.tsconfig中添加了"strict": false ,但編譯仍然失敗。 如果你能幫助我理解這一點,那也將是 gr8。

這會很好,我認為你的類型不正確。

看看這段代碼:

type SomeFunc = () => Promise<string>

const func: SomeFunc = () => {
  return new Promise<string>((resolve, reject) => resolve("someinfo"));
};


<div
  onClick={async (event: MouseEvent) => {
    event.preventDefault();

    const result = await func();
    console.log(result);
  }}
></div>

它工作正常,請在此處分享您的類型。 確保您已從 react 導入MouseEvent類型

暫無
暫無

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

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