我正在尝试将 recaptcha v2 添加到我的 Gatsby/Netlify 站点表单中,但我错过了实际显示小部件的最后一部分。它只是没有显示它的放置位置。
到目前为止,我的代码是这样的
gatsby-ssr.js 文件:
import React from "react"
export const onRenderBody = ({ setHeadComponents, setPostBodyComponents }) => {
setHeadComponents([
<script
dangerouslySetInnerHTML={{
__html: `
function onloadCallback() {
grecaptcha.render(document.getElementById('g-recaptcha'), {
"sitekey": '6LfMWLkaAAAAAFYM11ctU1Dxfz_v3SVrAKLOR3rM',
})
}
`,
}}
/>,
])
setPostBodyComponents([
<script
key="abc"
type="text/javascript"
src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
async
defer1
/>,
])
}
以及联系方式:
<Form className="contact-form" method="post" data-netlify-recaptcha="true" data-netlify="true" netlify-honeypot="bot-field">
...
<p className="hidden">
<label>Don’t fill this out if you’re human: <input name="bot-field" /></label>
</p>
...
<Form.Group id="recaptcha-container">
<div id="g-recaptcha" className="g-recaptcha" data-netlify-recaptcha="true" render="explicit"></div>
</Form.Group>
...
</Form>
在我将任何 Netlify 属性添加到我的表单之前,出现了错误“未捕获(承诺)错误:reCAPTCHA 占位符元素必须是元素或 id”,所以我很确定这与它无关。
有任何想法吗?谢谢。