You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React+TypeScript中如何指定Radio单选框的onChange事件类型

问题原因

你遇到的类型不匹配是因为你使用的Material UI FormControlLabel 组件的onChange回调签名和原生输入框不同:它会传入两个参数,第一个是事件对象,第二个是布尔值表示当前单选框的选中状态,且默认事件对象的泛型没有绑定到HTMLInputElement,所以你原本为原生输入框写的类型定义无法匹配。

解决方案

方案1:修改事件回调的类型定义,适配FormControlLabel的签名

直接调整handleChange的参数类型,补充第二个checked参数,同时明确事件对象的泛型:

const handleChange = (event: React.ChangeEvent<HTMLInputElement>, checked: boolean) => {
  // 示例逻辑:获取选中的单选框value
  const selectedValue = event.target.value;
  // 你的业务逻辑
};

这个方案不需要调整组件调用代码,直接适配FormControlLabel的事件规则即可。

方案2:把onChange绑定到内部的Radio组件上

如果你不想改原有的handleChange类型定义,可以把回调绑到Radio组件上,而非外层的FormControlLabel:

<FormControlLabel
 value="radio1"
 control={<Radio onChange={handleChange} />}
 label=" radio1"
/>
<FormControlLabel
 value="radio2"
 control={<Radio onChange={handleChange} />}
 label="radio2"
/>

Radio组件的onChange签名和原生文本输入框完全一致,你之前写的(event: React.ChangeEvent<HTMLInputElement>) => void类型可以直接复用。

内容的提问来源于stack exchange,提问作者Satyam Saurabh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:36:02