Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React-TypeScript |事件处理程序属性的正确类型_Javascript_Reactjs_Typescript_Ecmascript 6 - Fatal编程技术网

Javascript React-TypeScript |事件处理程序属性的正确类型

Javascript React-TypeScript |事件处理程序属性的正确类型,javascript,reactjs,typescript,ecmascript-6,Javascript,Reactjs,Typescript,Ecmascript 6,My App组件将事件处理程序作为道具传递给按钮组件 //App.js 公共手持播放=()=>{ this.setState({******}) } //渲染 通过prop传递的事件处理程序的正确类型是什么,即play //Button.js 界面按钮道具{ 播放:任何//这里的正确类型是什么? } 导出常量按钮:React.SFC=({play})=>( 玩 ) 我不想使用any,因为这会转移我对此类实例应用正确类型的注意力。它很可能是以下两种情况之一 (event: React.Mou

My App组件将事件处理程序作为道具传递给按钮组件

//App.js
公共手持播放=()=>{
this.setState({******})
}
//渲染
通过prop传递的事件处理程序的正确类型是什么,即
play

//Button.js
界面按钮道具{
播放:任何//这里的正确类型是什么?
}
导出常量按钮:React.SFC=({play})=>(
玩
)

我不想使用
any
,因为这会转移我对此类实例应用正确类型的注意力。

它很可能是以下两种情况之一

(event: React.MouseEvent<HTMLElement>) => void
(event: React.MouseEvent<HTMLInputElement>) => void
(事件:React.MouseEvent)=>无效
(事件:React.MouseEvent)=>void

您可以通过查看React键入来确认这一点。

最简单的解决方案是使用
MouseEventHandler
类型和
HTMLButtonElement
作为类型参数:

interface ButtonProps {
  play: React.MouseEventHandler<HTMLButtonElement>
}
界面按钮操作{
播放:React.MouseEventHandler
}

谢谢你,克里斯蒂安。您是否建议在
手柄中播放(事件:…)
?对于
播放
,请在
按钮操作中明确显示
handlePlay
如果一开始不使用该事件,则可以忽略此项,因为JavaScript允许省略参数。我无法将您的建议转换为上面问题中的当前代码示例。我添加了
onClick={(e:React.MouseEvent)=>playreach}
但是它的错误
类型不能分配给内在属性
@Jonca33,请按照Oblosys的答案执行。只要用我们的任一解决方案替换您最初注释的任何
,就足够了。非常感谢!成功了。