我正嘗試創建一個反應組件來處理我的recaptcha。我需要使用數據回調來設置我的組件的值,因爲我們沒有使用表單標籤。結果是,通過Google的recaptcha,他們通過iframe加載該字段。這意味着我無法訪問包含Google響應的textarea。我需要在驗證後才能得到textarea的值。我被阻止這樣做,因爲API在我的反應組件呈現之前未加載。如果我嘗試在我的組件中使用grecaptcha,它是未定義的。但是,在頁面加載後,我可以在控制檯中使用grecaptcha。Google ReCaptcha無法在jsx組件渲染之前加載
我目前試圖使用recaptcha的方式如下所示,不起作用。對象grecaptcha(由google創建的對象)未定義,並且數據回調從不被調用。
我寧願避開使用github上的插件或任何東西。這似乎不應該那麼複雜。如果有什麼幫助的話,我可以訪問lodash,以及反應插件。
這是身體標記在底部
<script src='https://www.google.com/recaptcha/api.js'></script>
下面是陣營組件JSX。
(function() {
"use strict";
/**
* Represents an HTML text element
*/
class Captcha extends COS.Input.Base
{
getCaptchaResponse() {
alert("working");
}
renderEdit()
{
return (
<div
ref="captcha"
id="captcha"
name="captcha"
data-sitekey="6Lc9fg4TAAAAAGYyFskow-g2b4IQ_rLvsLkHicuS"
data-callback={this.getCaptchaResponse}
className="g-recaptcha"></div>
);
}
}
Captcha.makeDefaultProps({
// Extend Default Props here
});
COS.Input.Captcha = Captcha;
})();