use-recaptcha.ts 536 B

1234567891011121314151617181920
  1. import { useRef } from 'react'
  2. import ReCAPTCHA from 'react-google-recaptcha'
  3. export const useRecaptcha = () => {
  4. const ref = useRef<ReCAPTCHA | null>(null)
  5. const getReCaptchaToken = async (): Promise<
  6. ReturnType<ReCAPTCHA['executeAsync']>
  7. > => {
  8. if (!ref.current) {
  9. return null
  10. }
  11. // Reset the reCAPTCHA before each submission.
  12. // The reCAPTCHA token is meant to be used once per validation
  13. ref.current.reset()
  14. return await ref.current.executeAsync()
  15. }
  16. return { ref, getReCaptchaToken }
  17. }