javascript - 为什么提交表单后页面会重新加载?(React/Netlify/react-recaptcha)
问题描述
问题:我正在使用该react-recaptcha
库在我的 ReactJS 表单中显示 Google reCAPTCHA v2。UI 看起来不错,但是当我提交表单时,页面会重新加载,并且我从未在 Netlify 上收到任何表单提交。
尝试:删除 reCAPTCHA 和表单工作正常,我在 Netlify 中收到表单提交,所以问题与 reCAPTCHA 有关。
我正在create-react-app
用于反应网站。
按照 Netlify表单文档,我已经从 Google注册了一个 reCAPTCHA v2 API 密钥对,并在站点设置中设置了两个环境变量。
相关代码可在此 gist 中找到:Github Gist
理论上,把它放在 html 中:
<script
src="https://www.google.com/recaptcha/api.js"
async
defer
></script>
这在 Form.js 中:
<Recaptcha
sitekey={process.env.REACT_APP_SITE_RECAPTCHA_KEY}
theme="dark"
/>
应该让它工作,但我不确定是什么导致表单提交后页面重新加载。
任何帮助将不胜感激!谢谢你。
编辑:这不是e.preventDefault()
问题,因为我使用 Netlify 来处理表单提交。提交表单后,它会将用户重定向到默认的表单成功页面。这里的问题是,一旦我在表单中添加了 reCAPTCHA,页面就会重新加载,而不会向我发送表单数据或重定向页面。即使在我e.preventDefault()
在表单提交中添加了一个处理程序之后也是如此。
解决方案
如评论中所述,表单提交页面,这就是预期的行为。如果您想避免这种情况,请调用preventDefault
该事件。
<form onSubmit={this.handleSubmit}
处理程序看起来像这样
handleSubmit(event) {
event.preventDefault()
推荐阅读
- android - 动画后 RecyclerView 项目重叠
- windows - 运行简单的连续 ping 并将结果输出到 csv 文件
- python - Python - 写回功能不起作用
- bash - 在分隔文件中搜索包含一组可能字符串的行,而不显示包含 string-somethingelse 的行
- dynamics-crm - Azure B2C 动态声明映射
- javascript - 在 SugarCRM 8.0.0 中的当前仪表板上获取 dashlets 行列表
- magento - 从购物车页面的自定义选项中删除价格文本
- html - 在网格块中定位 og 引导按钮
- select - dojo过滤选择中的奇怪行为
- sql - 如何通过接受 NULL 值的查询进行分区?