我正在用Typescript构建类似this React example的东西,目标是有一个有状态的父组件,它创建了几个无状态的子组件,这些子组件将它们的点击传递回父组件。
因为这个例子是用Javascript写的,所以我不知道输入框事件和onChange处理程序的类型是什么......我试过几个选项,比如React.MouseEvent<HTMLInputElement>
,但那只是猜测......
- 父组件**创建imageRows并传递处理程序:
render() {
<div>
<ImageRow key={el.url} onChange={this.onChange}/>
</div>
}
// what should the type of e be?
onChange(e:any){
}
以及ImageRow组件
export interface ImageRowProps {
genre: Array<number>
url: string
onChange : any // what is the type of the callback function?
}
export class ImageRow extends React.Component<ImageRowProps> {
render() {
return <div className="imagerow">
<input type="checkbox" key={index} onChange={this.props.onChange} defaultChecked={(num == 1)}/>
</div>
}
- 编辑**
类似的问题只显示事件类型,而不显示处理程序类型。当我更改事件类型时:
onChange(e: React.FormEvent<HTMLInputElement>){
console.log(e.target.value)
}
我得到这个错误:
Property 'value' does not exist on type 'EventTarget'.
3条答案
按热度按时间wkftcu5l1#
当有疑问时,让它通过使用箭头来为你推断。
答案
在您的情况下,
e
就是React.ChangeEvent<HTMLInputElement>
。mzillmmw2#
在我们的申请中,
控制台日志(事件目标值);//不工作(空值)
控制台.日志(事件.目标.已选中);//工作正常(true / false)
gxwragnw3#
就这么办吧:
橡皮刷的线就会消失。