javascript - 无法让 e.preventDefault 与 React Typescript 一起使用
问题描述
我有一个看起来像这样的组件:
const App = (): ReactElement => {
const submitFeedbackHandler = (e: FormEvent): void => {
e.preventDefault();
// ...
}
return <>
<form onSubmit={submitFeedbackHandler}>
// ...
<button type='submit'>Submit</button>
</form>
</>
}
问题是,无论我如何尝试调用它submitFeedbackHandler
都onSubmit
不起作用。我试过onSubmit={(e) => submitFeedbackHandler(e)}
了,但也没有运气。我怎样才能让它工作,以便我能做到e.preventDefault()
?
解决方案
这可能会让像我这样没有经验的 React 开发人员有些头疼,所以这里是问题的答案:
我已将required
标签添加到表单中的某些输入中。奇怪的是,这onSubmit
完全停止被调用。即使只是简单地调用onSubmit = {() => console.log('onSubmit!')}
也不起作用,所以我从表单中的输入中删除了所有必需的标签,现在它工作正常。在这种情况下,我将自己验证空字段,而不是依赖于输入所需的标签。
我认为这与 React 中受控和不受控的组件有关。将做进一步的研究,看看究竟是什么原因造成的。感谢@Julius Guevarra 的帮助。
推荐阅读
- bash - 如何避免从另一个脚本调用相同的 bash 脚本多次运行?
- android - 了解 View.drawableStateChanged
- javascript - 仅使用 Javascript 动态填充谷歌图表
- istio - istio 跟踪网络请求并查找故障点
- node.js - Flutter Web 状态和使用 Flutter 的服务器端解决方案
- r - 如何将分类列表应用于 excel 或 R 中的大型数据集
- python - 匹配一个单词中的多个双字符 - Python regex
- kotlin - 具有 Kotlin 类型推断的反应器因 flatMapMany(Flux::fromIterable)而失败
- c++ - 调用操作符方法和调用子类中没有实现的父类的其他方法有什么区别?
- sql-server - Spark - 使用 com.microsoft.azure 从 SQL Server 读取