Javascript React-TypeScript |事件处理程序属性的正确类型
My App组件将事件处理程序作为道具传递给按钮组件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
//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的答案执行。只要用我们的任一解决方案替换您最初注释的任何
,就足够了。非常感谢!成功了。