128 votes

Pourquoi le `MouseEvent` du gestionnaire d'événements de la case à cocher n'est-il pas générique ?

J'ai un élément checkbox TSX(JSX) :

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

A l'aide du code VS, je sais que le type de paramètre d'entrée de la fonction this.handleCheckboxClick est MouseEvent<HTMLInputElement> . Je l'ai donc mis en œuvre avec :

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

Ensuite, j'obtiens une erreur disant [ts] Type 'MouseEvent' is not generic. Comme le montre l'image ci-dessous :

enter image description here

Version de mes paquets :

"@types/react": "^15.0.29",
"@types/react-dom": "^15.5.0",
"react": "^15.6.1",
"react-dom": "^15.6.1",
"typescript": "^2.3.4",

Pourquoi ça ?

359voto

rossipedia Points 10922

Vous utilisez probablement le DOM MouseEvent . Essayez d'utiliser React.MouseEvent<HTMLInputElement> à la place.

3 votes

Ça ne marche pas pour moi, je comprends : type: "checkbox" onChange: (e: MouseEvent<HTMLInputElement>) => void; defaultChec...' is not assignable to type 'InputHTMLAttributes<HTMLInputElement>'

0 votes

@Kokodoko avez vous résolu ce problème ?

0 votes

Merci, cela m'a aidé à avancer ! Mon événement de clic ressemble maintenant à ceci clickHandler?: (event?: MouseEvent<HTMLButtonElement, Event>) => void; - J'espère que cela aidera quelqu'un d'autre :)

18voto

Guy Engel Points 1218

Afin d'utiliser React MouseEvent, assurez-vous simplement d'ajouter :

import { MouseEvent } from 'react';

6voto

user3036876 Points 52

Vous pouvez utiliser SyntheticEvent au lieu de MouseEvent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X