Javascript 打字脚本反应<;选择>;onChange处理程序类型错误
我正在尝试将onChange事件处理程序添加到从材质ui选择组件:Javascript 打字脚本反应<;选择>;onChange处理程序类型错误,javascript,reactjs,typescript,material-ui,Javascript,Reactjs,Typescript,Material Ui,我正在尝试将onChange事件处理程序添加到从材质ui选择组件: <Select labelId="demo-simple-select-label" id="demo-simple-select" value={values.country} onChange={handleCountryChange} > {countries.map(c => { return ( &
<Select
labelId="demo-simple-select-label"
id="demo-simple-select"
value={values.country}
onChange={handleCountryChange}
>
{countries.map(c => {
return (
<MenuItem value={c}>{c}</MenuItem>
)
})}
</Select>
{国家地图(c=>{
返回(
{c}
)
})}
和我的事件处理程序:
const handleCountryChange = (event: React.ChangeEvent<HTMLSelectElement>) => {
setValues({...values, country: event.target.value});
};
constHandleCountryChange=(事件:React.ChangeEvent)=>{
setValues({…值,国家:event.target.value});
};
但我得到了以下错误:
类型'(事件:ChangeEvent)=>void'不可分配给类型'(事件:ChangeEvent,子节点:ReactNode)=>void'
怎么了?在
选择input.d.ts
中,更改事件的定义似乎不正确。详情如下:
尝试使用他们推荐的签名:
const handleCountryChange = (event: any) => { ... }
由于MUI Select不是一个真正的Select元素,因此您需要使用
as Type
强制转换e.target.value
,并将处理程序键入React.ChangeEvent
constHandleCountryChange=(事件:React.ChangeEvent)=>{
setValues({…值,国家:event.target.value as string});
};
这不是他们推荐的签名,这是一个懒惰的any
ahahah
const handleCountryChange = (event: React.ChangeEvent<{ value: unknown }>) => {
setValues({...values, country: event.target.value as string});
};