Tại sao `MouseEvent` trong trình xử lý sự kiện hộp kiểm không chung chung?


92

Tôi có một phần tử TSX (JSX) hộp kiểm:

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

Với sự trợ giúp của mã VS, tôi biết rằng loại tham số đầu vào của this.handleCheckboxClickMouseEvent<HTMLInputElement>. Vì vậy, tôi đã triển khai nó với:

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

Sau đó, tôi gặp lỗi nói [ts] Type 'MouseEvent' is not generic.Như được hiển thị trong hình ảnh bên dưới:

nhập mô tả hình ảnh ở đây

Phiên bản các gói của tôi:

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

Tại sao vậy?

Câu trả lời:


250

Có thể bạn đang sử dụng DOM MouseEvent. Hãy thử sử dụng React.MouseEvent<HTMLInputElement>thay thế.


2
Không làm việc cho tôi, tôi nhận được:type: "checkbox" onChange: (e: MouseEvent<HTMLInputElement>) => void; defaultChec...' is not assignable to type 'InputHTMLAttributes<HTMLInputElement>'
Kokodoko

@Kokodoko bạn đã từng sửa lỗi này chưa?
SuperUberDuper


3

Bạn có thể sử dụng SyntheticEvent thay vì MouseEvent

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.