Javascript 反应/类型脚本:读取已更改的选择框
考虑以下组件Javascript 反应/类型脚本:读取已更改的选择框,javascript,reactjs,typescript,events,html-select,Javascript,Reactjs,Typescript,Events,Html Select,考虑以下组件src/src/components/year.tsx: import React from 'react'; interface YearComponentProps { changeYear: Function; year: number; allowBefore: boolean; } const YearComponent: React.FC<YearComponentProps> = (props: YearComponentProps) =&g
src/src/components/year.tsx
:
import React from 'react';
interface YearComponentProps {
changeYear: Function;
year: number;
allowBefore: boolean;
}
const YearComponent: React.FC<YearComponentProps> = (props: YearComponentProps) => {
let nowYear: number = props.year;
const startYear: number = (props.allowBefore) ? nowYear - 100 : nowYear;
const years: Array<number> = [];
for (let i = startYear; i <= props.year + 100; i++) {
years.push(i);
}
return (
<div className="year-component">
<select value={nowYear} onChange={(e) => props.changeYear(e)}>
{years.map(yr => {
return (<option key={yr} value={yr}>{yr}</option>);
})}
</select>
</div>
);
}
export default YearComponent;
因此,我想做的是,当用户在选择框中进行更改时,父组件应使用新的一年更新其状态。但我不懂如何在select上阅读这一年。如您所见,我尝试了console.log(event.target.value)代码>但这给了我一个错误:
index.js:1375 E:/Projekt/react-datepicker-clean-container/src/src/index.tsx
TypeScript error in E:/Projekt/react-datepicker-clean-container/src/src/index.tsx(214,30):
Property 'value' does not exist on type 'EventTarget'. TS2339
19 |
20 | changeYear(event: React.SyntheticEvent) {
> 21 | console.log(event.target.value);
| ^
22 | }
23 |
24 | render() {
我认为使用event.target.value
是正确的方法。打印event.target
只会给我选择框的HTML代码。我尝试使用中所述的(event.target).value
,但这对我毫无帮助
有人知道我做错了什么吗?“我认为使用event.target.value是正确的方法。”是的,请注意,错误来自于TypeScript。这是一个典型的问题SyntheticEvent
的target
只是一个HTMLElement
,它没有值
属性,因为它只在HTMLInputElement
上。有关详细信息,请参阅链接问题的答案。您过去必须使用类型断言,但显示了如何使用较新版本的React类型,您可以使用React.FormEvent
作为事件类型。它的目标
将是一个HTMLSelectElement
,因此您可以使用值
@T.J.Crowder我看到了您指向另一个问题的链接。我在谷歌搜索、搜索和写我的问题时没有找到它,但像那个问题那样做是有效的。谢谢。很高兴这有帮助!请注意,我添加了第二条,这似乎是最新的(我删除了上面第一条评论中的一些内容,并发布了第二条)。快乐编码!
index.js:1375 E:/Projekt/react-datepicker-clean-container/src/src/index.tsx
TypeScript error in E:/Projekt/react-datepicker-clean-container/src/src/index.tsx(214,30):
Property 'value' does not exist on type 'EventTarget'. TS2339
19 |
20 | changeYear(event: React.SyntheticEvent) {
> 21 | console.log(event.target.value);
| ^
22 | }
23 |
24 | render() {