为什么复选框事件处理程序中的`MouseEvent`不是通用的?

Ben*_*Ben 56 events types jsx typescript reactjs

我有一个复选框TSX(JSX)元素:

<input type="checkbox" name={i.toString()} onClick={this.handleCheckboxClick} />
Run Code Online (Sandbox Code Playgroud)

在VS代码的帮助下,我知道输入参数类型this.handleCheckboxClickMouseEvent<HTMLInputElement>.所以我实现了它:

private handleCheckboxClick(event: MouseEvent<HTMLInputElement>) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后我收到错误说明[ts] Type 'MouseEvent' is not generic.如下图所示:

在此输入图像描述

我的包的版本:

"@types/react": "^15.0.29",
"@types/react-dom": "^15.5.0",
"react": "^15.6.1",
"react-dom": "^15.6.1",
"typescript": "^2.3.4",
Run Code Online (Sandbox Code Playgroud)

这是为什么?

ros*_*dia 158

你可能正在使用DOM MouseEvent.请尝试使用React.MouseEvent<HTMLInputElement>.

  • 谢谢,这对我的道路有帮助!我的点击事件现在看起来像 `clickHandler?: (event?: MouseEvent&lt;HTMLButtonElement, Event&gt;) =&gt; void;` - 希望对其他人有帮助:) (3认同)
  • 对我不起作用,我得到:`type: "checkbox" onChange: (e: MouseEvent&lt;HTMLInputElement&gt;) =&gt; void; defaultCheck...' 不可分配到类型 'InputHTMLAttributes&lt;HTMLInputElement&gt;'` (2认同)

小智 14

为了使用 React MouseEvent 只需确保添加:

import { MouseEvent } from 'react';
Run Code Online (Sandbox Code Playgroud)


use*_*876 5

您可以使用 SyntheticEvent 而不是 MouseEvent