【发布时间】:2021-12-24 23:00:35
【问题描述】:
如何使用 ReactJs 和 typescript 为单选按钮指定事件类型
我试过了,但它不适用于单选按钮,尽管它适用于 input type="text"
const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
....
};
<FormControlLabel
value="radio1"
control={<Radio />}
label=" radio1"
onChange={handleChange}
/>
<FormControlLabel
value="radio2"
control={<Radio />}
label="radio2"
onChange={handleChange}
/>
错误
Type '(event: React.ChangeEvent<HTMLInputElement>) => void' is not assignable to type '(event: ChangeEvent<{}>, checked: boolean) => void'.
Types of parameters 'event' and 'event' are incompatible.
Type 'ChangeEvent<{}>' is not assignable to type 'ChangeEvent<HTMLInputElement>'.
Type '{}' is missing the following properties from type 'HTMLInputElement': accept, align, alt, autocomplete, and 329 more.ts(2322)
【问题讨论】:
-
this answer 暗示应该使用
React.FormEvent(而不是React.ChangeEvent) -
这也不行
-
在阅读更多内容后,在大多数实现中,
currentTarget似乎优于target。它旨在处理状态更新,但有趣的部分是:似乎文本输入是唯一可以接受target且没有特殊问题的元素 - 这可能与您在打字稿构建中遇到的问题有关- 它完全有一个单独的界面。我会看看这个界面与其他表单控件有什么不同,我相信你会在那里找到一些关于如何解决这个问题的提示
标签: javascript reactjs typescript events react-typescript