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() {