Вот этот простой, как два пальца об асфальт код не работает, как должен. По кнопке статус меняется, с капчи статус приходит, в консоль пишется статус верный, с токеном, но перерисовки НЕТ! То есть Captcha ready я увижу, только если на кнопку жмакну! 🤯
const CaptchaProtected = (props) => {
const recaptcha = useRef(null);
const [state, setState] = useState({received: false, token: false});
const captchaTokenReceived = useCallback((t) => {
setState({received: true, token: t});
})
console.log('Render', state)
useEffect(() => {
if (recaptcha.current)
recaptcha.current.execute();
},[]);
return (
<div className="captcha_form">
{
(state.received === false)
?
<div className="">Captcha loading...<button onClick={() => {captchaTokenReceived('aaaaaa')}}>Херак!</button></div>
:
<div>Captcha ready...</div>
}
<ReCaptcha
ref = {recaptcha}
sitekey="6LffWGkeAAAAAAJaUlZGIrnhnVrxw9AfzOMNqZJZ"
action='submit'
verifyCallback={captchaTokenReceived}
/>
</div>
)
}
я могу в useEffect таймер создать даже, из него тоже событие прекрасно обновляет компонент, но ПОЧЕМУ ЭТА С*КА не обновляется, когда событие дергается рекапчей? Как это вообще возможно?
Обсуждают сегодня