【发布时间】:2020-11-12 04:50:01
【问题描述】:
我正在将我的很多代码重构为 TypeScript,刚刚真正开始掌握 TS。当 TS 在 React 事件上强制 HTML 元素类型时,它已经考虑到我如何创建我的表单及其提交事件处理。
我一直使用带有onClick={this.handleSubmission} 事件处理程序的<button /> 元素。现在,在 React 事件上指定的 HTML 元素类型让我认为似乎有两种主要的方式来处理表单提交 - 通过捕获提交按钮上的点击事件(如上)或通过捕获 onSubmit 事件表单本身。这些似乎在 TypeScript 中键入以下内容:-
(e: React.MouseEvent<HTMLButtonElement>)
(e: React.FormEvent<HTMLFormElement>)
就最佳实践而言,两者之间真的有区别吗?我假设提交按钮单击(假设它是一个真正的 HTML 按钮元素)将始终由 (e: React.MouseEvent<HTMLButtonElement>) 处理。但是,<input type="submit" value="Submit" /> 似乎(在 TS 术语中)是 HTMLFormElement 上的真正 FormEvent,因为它不能是按钮事件。
是否有最佳实践或技术要求,还是仅取决于个人喜好?谢谢。
【问题讨论】:
标签: javascript reactjs typescript forms