javascript - Typescript React <Select> onChange 处理程序类型错误

标签 javascript reactjs typescript material-ui

我正在尝试将 onChange 事件处理程序添加到material-ui 中的 Select 组件:

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

和我的事件处理程序:

const handleCountryChange = (event: React.ChangeEvent<HTMLSelectElement>) => {
    setValues({...values, country: event.target.value});
  };

但我收到以下错误:

Type '(event: ChangeEvent) => void' is not assignable to type '(event: ChangeEvent<{ name?: string | undefined; value: unknown; }>, child: ReactNode) => void'.

出了什么问题?

最佳答案

由于 MUI Select 不是真正的选择元素,因此您需要强制转换 e.target.value使用as Type并将处理程序键入 React.ChangeEvent<{ value: unknown }>

const handleCountryChange = (event: React.ChangeEvent<{ value: unknown }>) => {
  setValues({...values, country: event.target.value as string});
};

关于javascript - Typescript React <Select> onChange 处理程序类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58675993/

相关文章:

javascript - 如何在 Semantic UI React 中实现多选过滤器下拉列表

facebook - reactjs 和 Facebook API : Getting error 'FB' is not defined no-undef

javascript - 按 React Native Elements UI Toolkit 中的按钮转到 Web URL

javascript - 如何将成员的所有函数公开为类自己的函数?

facebook-graph-api - 如何从 Angular2 服务访问 FB global?

javascript - 你如何使用javascript的音频按钮的多个来源

javascript - 传播运算符使用数组 forEach 循环将值动态复制到嵌套对象

javascript - jQuery UI 可拖动未绑定(bind)到父边界

javascript - 将 iPhone 检测添加到 jQuery 脚本

typescript - 声明窗口 typescript 定义的正确方法