【发布时间】:2019-09-07 19:54:52
【问题描述】:
我在项目(React、TS、Mobx)中添加了 onChange 方法,但出现错误:Argument of type '{ [x: number]: any; }' is not assignable to parameter of type
我是 TypeScript 的新手,不知道为什么会这样。可能是什么问题?
(parameter) event: {
target: {
name: any;
value: any;
};
}
类型参数 '{ [x: number]: any; }' 不可分配给 'IAddPlayerFormState | 类型的参数((上一个状态: 只读,道具:只读) => IAddPlayerFormState |挑选 |空) |选择<...> |空'。
import React, { Component } from 'react';
import ViewStore from '../../../store/ViewStore';
import { TextField } from './../../../utils';
interface IAddPlayerFormProps {
viewStore?: ViewStore; // Optional ViewStore
}
interface IAddPlayerFormState {
playerName: string;
isDisabled: boolean;
}
class AddPlayerForm extends Component<IAddPlayerFormProps, IAddPlayerFormState> {
constructor(props: Readonly<IAddPlayerFormProps>) {
super(props);
this.state = {
isDisabled: false,
playerName: '',
};
}
public onChange(event: { target: { name: any; value: any; }; }) {
this.setState({ [event.target.name]: event.target.value });
console.log('On Change!');
}
public handleSubmit = () => {
console.log('On submit!');
}
public render() {
const { isDisabled } = this.state;
return (
<form onSubmit={this.handleSubmit}>
<TextField
type="text"
name="name"
value={name}
placeholder="Add player"
onChange={this.onChange}
disabled={isDisabled}
/>
<input type="submit" />
</form>
);
}
}
export default AddPlayerForm;
【问题讨论】:
-
您在使用任何 UI 库吗?如果是这样,请查看那里的输入元素类型。否则不需要破坏内联类型,只需
event:React.FormEvent这是一个合成事件,包含目标名称和目标值的所有类型
标签: javascript reactjs typescript mobx