   => void;
/* Set your custom cancel button text /
cancelButtonText?: string;
/* Callback for pressing the cancel button /
onCancel: () => void;
/* Recaptcha version /
recaptchaVersion?: 'v2' | 'v3';
}
`javascript
import React, {useState} from 'react';
import {Recaptcha} from 'react-native-recaptcha';
interface CaptchaRefProps {
hide: () => void;
show: () => void;
}
export default function App() {
const [captcha, setCaptcha] = useState('');
const [showCaptcha, setShowCaptcha] = useState(false);
const captchaRef = useRef < CaptchaRefProps > null;
const onCancel = () => {
setShowCaptcha(false);
};
const onMessage = (event: string) => {
if (event !== 'expired' && event !== 'error') {
if (event.includes('Timeout')) {
captchaRef?.current?.show();
} else if (['cancel', 'error', 'expired'].includes(event)) {
captchaRef.current?.hide();
setCaptcha('');
setShowCaptcha(false);
} else {
setCaptcha(event);
setShowCaptcha(false);
setTimeout(() => {
captchaRef?.current?.hide();
}, 1500);
}
} else {
setLoading(false);
captchaRef?.current?.hide();
setCaptcha('');
setShowCaptcha(false);
}
};
return (
{showCaptcha && (
recaptchaVersion="v2" // 'v3'
onCancel={onCancel}
siteKey={SITE_KEY}
baseUrl={YOUR_URL}
languageCode="pt-BR"
cancelButtonText="Cancelar"
onMessage={onMessage}
/>
)}
);
}
``