下拉onchange不起作用:React + Typescript +语义UI反应

时间:2019-05-21 11:49:57

标签: reactjs typescript semantic-ui-react

我正在尝试使用语义UI响应和打字稿来显示一个下拉列表。我在这里面临的问题是,我无法将更改处理程序附加到它。它引发以下错误“类型'SyntheticEvent'无法分配给类型'ChangeEvent'”

//Importing Dropdown
import Dropdown from 'semantic-ui-react/dist/commonjs/modules/Dropdown';

//options array
const options = [
  { key: 1, text: 'Location 1', value: 1 },
  { key: 2, text: 'Location 2', value: 2 },
  { key: 3, text: 'Location 3', value: 3 },
]

//state object
this.state ={
  value : ''
}

//Dropwdown change event
dropdownChange = (event: React.ChangeEvent<HTMLSelectElement> ,{value}) =>{
   this.setState({ value });
}

//Rendering Drop down
render()
{
  return(
      <Dropdown  
        options={opitons}
        name="value"  
        value={this.state.value}
        onChange={this.dropdownChange}
      />
  )
}

1 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为该库未使用ChangeEvent,而正在使用SyntheticEvent

onChange元素上的Dropdown函数的类型为:

onChange?: (event: React.SyntheticEvent<HTMLElement>, data: DropdownProps) => void

您可以在这里https://github.com/Semantic-Org/Semantic-UI-React/blob/master/src/modules/Dropdown/Dropdown.d.ts#L143

看到它们

所以您应该更改此行:

dropdownChange = (event: React.ChangeEvent<HTMLSelectElement> ,{value}) =>{

至:

dropdownChange = (event: React.SyntheticEvent<HTMLElement> ,{value}) =>{