React TypeScript:正确的 onChange 类型

IT技术 reactjs typescript
2021-05-20 00:31:36

什么是正确的类型target: { value: any, name: any }我得到的错误是Duplicate identifier 'any'.我也得到了错误Binding element 'any' implicitly has an 'any' type.为什么会value给出错误“找不到名称‘值’?”

这里有一个代码沙箱


const [state, setState] = useState({
    fullName: '',
});

const { fullName } = state;

const onChange = ({ target: { value: any, name: any } }) => {
    setState((prev) => ({
        ...prev,
        [name] : value, // <= 'Cannot find name 'value'
    }));
};

...

<input
  type='text'
  placeholder='Full name'
  name='fullName'
  value={fullName}
  onChange={onChange}
/>
1个回答

eventonChange应该是ChangeEvent<HTMLInputElement>

所以,你必须这样做:

const [fullName, setFullName] = useState('');

...

const onChange = (event: ChangeEvent<HTMLInputElement>) => {
    setFullName(event.currentTarget.value);
};

...

<input
  type='text'
  placeholder='Full name'
  name='fullName'
  value={fullName}
  onChange={onChange}
/>