创建自定义Form
组件,当子输入发生变化时,该组件应更改其data
。
长话短说:
在当前上下文中currentTarget
是表单,target
是触发事件的输入。 target
正是我所需要的 - 因为我可以更新数据:
this.setState({
data: {
[e.target.name]: e.target.value
}
});
有什么想法吗?
编辑:类似这样的作品,但这是错误的:
handleChange(e:React.FormEvent){ 让foo:any = e; this.setState({ 数据:{ [foo.target.name]:foo.target.value } }); }
答案 0 :(得分:1)
经过一些实验:
handleChange(e: React.FormEvent<HTMLFormElement>) {
let name: string = (e.target as HTMLFormElement).name;
let value: string = (e.target as HTMLFormElement).value;
this.setState({
data: {
[name]: value
}
});
这是有道理的,因为在这种情况下,HTMLInputElement
(target
)被访问为HTMLFormElement
(听众)。
可能有更优雅的解决方案,但这种方法有效。
答案 1 :(得分:0)
如何调用函数handleChange?
我猜你做的是这样的事情:onChange={this.handleChange()}
但你必须这样做:
onChange={this.handleChange)}
实际上,你必须传递函数的引用,而不是调用函数
答案 2 :(得分:0)
将参数更改为handleChange(e: React.FormEvent<HTMLFormElement>)
并使用e.currentTarget.name
。
@thurt解释了为什么在related SO question中,我还在类型定义文件here中找到了一些有用的注释。