Я пытаюсь создать компонент реакции для обработки моего recaptcha. Мне нужно использовать обратный вызов данных, чтобы установить значение моего компонента, так как мы не используем теги формы. Что происходит, так это то, что через recaptcha Google они загружают поле через iframe. Это означает, что у меня нет доступа к текстовой области, содержащей ответ от Google. Мне нужно получить значение текстового поля только после его проверки. Я не могу этого сделать, потому что API не загружается до рендеринга моего компонента. Если я пытаюсь использовать grecaptcha в моем компоненте, он не определен. Однако после загрузки страницы я могу использовать grecaptcha в консоли.Google ReCaptcha не загружается до рендеринга jsx-компонента
Способ, которым я пытаюсь использовать recaptcha, как показано ниже, не работает. Объект grecaptcha (тот, который создан Google) не определен, и вызов-вызов никогда не вызывается.
Я бы предпочел уклониться от использования плагина или чего-нибудь из github. Кажется, это не должно быть так сложно. У меня есть доступ к lodash, если что-нибудь там поможет, а также аддон-аддоны.
Это в тегах тела в нижней
<script src='https://www.google.com/recaptcha/api.js'></script>
Вот JSX для React компонента.
(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;
})();