【发布时间】:2021-06-19 11:44:51
【问题描述】:
我是 react/typescript 世界的新手,我有两个 Select 元素,一个是正常的,另一个是 antd 版本,由于某种原因,在 antd 版本上 onchange 不会给出任何错误,但在普通版本上我收到此错误:
(JSX attribute) React.SelectHTMLAttributes<HTMLSelectElement>.onChange?: React.ChangeEventHandler<HTMLSelectElement> | undefined
Type '(customerId: string) => void' is not assignable to type 'ChangeEventHandler<HTMLSelectElement>'.
Types of parameters 'customerId' and 'event' are incompatible.
Type 'ChangeEvent<HTMLSelectElement>' is not assignable to type 'string'.ts(2322)
index.d.ts(2274, 9): The expected type comes from property 'onChange' which is declared here on type 'DetailedHTMLProps<SelectHTMLAttributes<HTMLSelectElement>, HTMLSelectElement>'
我的代码是这样的:
<Select id="senderId" onChange={setSender}>
{customerList.map((item, idx) => (
<option key={idx} value={item.id}>
{item.name}
</option>
))}
</Select>
只需将 Select 的首字母改为小写即可正常选择
【问题讨论】:
-
您好,显然您在 onChange 中的功能存在问题。你能在codeandbox.io或类似的地方分享一个你的组件的小例子吗?
-
正如我所说的它正在使用antd,但我想使用正常的选择,为什么要报错?
-
因为 antd 可以以不同的方式管理 onChange 事件。您需要使用事件参数处理 onChange 事件。 setSender = (event) => {event.target.value}
-
codepen.io/Cuchu/pen/xxgxZmo?editors=001 这是来自 antd。他们在 onChange 方法中使用了一个键。您需要在选择中使用不同的功能。并抓住事件而不是关键。
标签: javascript html reactjs typescript types