Чому `MouseEvent` у обробнику подій прапорця не є загальним?


92

У мене є прапорець TSX (JSX) елемент:

<input type="checkbox" name={i.toString()} onClick={this.handleCheckboxClick} />

За допомогою коду VS я знаю, що тип вхідного параметра this.handleCheckboxClickє MouseEvent<HTMLInputElement>. Тож я реалізував це за допомогою:

private handleCheckboxClick(event: MouseEvent<HTMLInputElement>) {
    ...
}

Тоді я отримую повідомлення про помилку, [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",

Чому так?

Відповіді:


249

Ви, мабуть, використовуєте DOM MouseEvent. Спробуйте React.MouseEvent<HTMLInputElement>замість цього.


2
Не працює у мене, я отримую:type: "checkbox" onChange: (e: MouseEvent<HTMLInputElement>) => void; defaultChec...' is not assignable to type 'InputHTMLAttributes<HTMLInputElement>'
Кокодоко

@Kokodoko ви коли-небудь це виправляли?
SuperUberDuper


3

Ви можете використовувати SyntheticEvent замість MouseEvent

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.