Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 打字脚本反应<;选择>;onChange处理程序类型错误_Javascript_Reactjs_Typescript_Material Ui - Fatal编程技术网

Javascript 打字脚本反应<;选择>;onChange处理程序类型错误

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 ( &

我正在尝试将onChange事件处理程序添加到从材质ui选择组件:

<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});
};