Anu*_*hra 3 typescript reactjs
我正在将一个 onChange 事件作为道具传递给一个组件,但我收到了数据类型错误。
父组件 -
const onChangeStatus=(selectType:string , e:React.ChangeEvent<HTMLSelectElement>) => {
const { options } = e.target;
console.log(options)
}
<GlobalSearchAssignmentFilter
onChangeAssignmentStatus={onChangeStatus}
/>
Run Code Online (Sandbox Code Playgroud)
子组件 - 我已经定义了一个接口
interface A {
onChangeAssignmentStatus: (
selectType: string,
event:React.ChangeEvent<HTMLInputElement>
) => void;
}
Run Code Online (Sandbox Code Playgroud)
组件代码 - <选择多个原生 onChange={(event: React.ChangeEvent):void => onChangeAssignmentStatus(ASSIGNMENT_STATUS_PROPERTY , event) } inputProps={{ id: 'select-multiple-native', }} > {assignmentFilterData.assignmentDispositions. map((item: any) => ( {item.key} ))}
我正在从 Material UI 多选中导入 Select。当我将 onChangeAssignmentStatus 事件传递给子组件时出现错误。错误是——
Type '(selectType: string, e: React.ChangeEvent<HTMLSelectElement>) => void' is not assignable to type '(selectType: string, event: ChangeEvent<HTMLInputElement>) => void'.
Types of parameters 'e' and 'event' are incompatible.
Type 'ChangeEvent<HTMLInputElement>' is not assignable to type 'ChangeEvent<HTMLSelectElement>'.
Type 'HTMLInputElement' is missing the following properties from type 'HTMLSelectElement': length, options, selectedIndex, selectedOptions, and 3 more.
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误?
小智 6
在您的onChangeStatus函数中,您希望e类型为React.ChangeEvent<HTMLSelectElement>。
但是,在您的 中interface A,您将 的类型设置event为React.ChangeEvent<HTMLInputElement>。
这两种类型不匹配,这就是您收到错误的原因。
如果要修复错误,e请将onChangeStatus函数中的参数修改为如下类型React.ChangeEvent<HTMLInputElement>:
const onChangeStatus=(selectType:string , e:React.ChangeEvent<HTMLInputElement>) => {
const { options } = e.target;
console.log(options)
}
Run Code Online (Sandbox Code Playgroud)
或者修改你的函数interface A的参数是这样的:eventonChangeAssignmentStatusReact.ChangeEvent<HTMLSelectElement>
interface A {
onChangeAssignmentStatus: (
selectType: string,
event:React.ChangeEvent<HTMLSelectElement>
) => void;
}
Run Code Online (Sandbox Code Playgroud)
此外,您可以设置类型onChangeStatus以匹配interface A. 这样打字稿会告诉你参数应该是什么类型。如果你想这样做,你可以访问onChangeAssignmentStatuswith的类型A['onChangeAssignmentStatus']。
| 归档时间: |
|
| 查看次数: |
2783 次 |
| 最近记录: |