Общая идея заключается в том, что токен рекапчи действителен только в течение определенного периода времени. Это так, что токены не могут быть легко угаданы другими компьютерными системами.
Вместо того, чтобы делать капчу при монтировании, вы должны выполнить ее только onSubmit
, следовательно, пользователь заполнил бы форму, если бы вообще увидел капчу.
handleSubmit(event) {
event.preventDefault();
this._reCaptchaRef.current.execute()
}
Это, в свою очередь, вызовет обработчик onChange
(или обработчик onError
), и вы сможете отправить форму оттуда.
Но если вы захотите как-нибудь, оставьте его в componentDidMount
, вы можете сбросить код проверки и выполнить его снова.
redoCaptcha() {
this._reCaptchaRef.current.reset();
this._reCaptchaRef.current.execute();
}
render() {
...
<ReCAPTCHA
onExpired={this.redoCaptcha}
/>
}