繁体   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