• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

React i Google reCAPTCHA

0 głosów
391 wizyt
pytanie zadane 7 listopada 2024 w Hostingi, domeny, usługi przez krzysieq18 Początkujący (390 p.)

Cześć,

Próbuję dodać do strony React funkcjonalność abym mógł wysyłać dane do API gdzie "captcha": "string" (więc będzie tam przesyłany token.) Jest jednak problem mianowicie cały czas po wypełnieniu formularza i kliknięciu submita ("Wyślij") pojawia mi się info: "Proszę rozwiązać CAPTCHA!", a w konsoli nie pokazują mi się żadne błędy.

Będę bardzo wdzięczny za pomoc w rozwiązaniu problemu :)

Kod(Member.jsx): 

import React, { useState, useEffect } from 'react';
import axios from 'axios';
...
import ReCAPTCHA from 'react-google-recaptcha'


const Member = () => {
  ...
  const [captchaToken, setCaptchaToken] = useState('');

  const validatePhoneNumber = (number) => {
    const phoneRegex = /^[0-9]{9}$/;
    return phoneRegex.test(number);
  };

  ...

  const handleCaptchaChange = (token) => {
    console.log('Captcha token:', token);
    setCaptchaToken(token);
  };
  

  const handleSubmit = async (event) => {
    event.preventDefault();

    if (!captchaToken) {
      setNotification({ type: 'error', message: 'Problem z CAPTCHA' });
      return;
    }

    if (!validatePhoneNumber(phone)) {
      setNotification({ type: 'error', message: 'Numer telefonu powinien się składać z dokładnie 9 cyfr.' });
      return;
    }

    ....

    const data = {
      firstName,
      lastName,
      phone: parseInt(phone, 10),
      ....
      captcha: captchaToken,
    };
    
    console.log(data);

    try {
      await axios.post('https://###, data, {
        headers: {
          'Content-Type': 'application/json',
          'accept': 'application/json'
        },
      });
      setNotification({ type: 'success', message: '...' });
      setFirstName('');
      setLastName('');
      setPhone('');
      ....
    } catch (error) {
      setNotification({ type: 'error', message: '...' });
    }
  };

  const closeNotification = () => {
    setNotification({ type: '', message: '' });
  };

  const handleSelectAll = () => {
    const newSelectAll = !selectAll;
    setSelectAll(newSelectAll);
    setTermsAccepted(newSelectAll);
    ...
  };

  const isFormValid = termsAccepted && ageConfirmed && dataProcessingAccepted && newsletterAccepted;

  useEffect(() => {
    
  }, [showConfetti]);

  return (
    <section className="section member">
      <div className="container">
        <h2 className="title">...</h2>
        <form onSubmit={handleSubmit}>
          <div className="row">
            <input
              type="text"
              id="firstName"
              className="form-control"
              placeholder="Imię"
              value={firstName}
              onChange={(e) => setFirstName(e.target.value)}
              required
            />
          </div>
          <div className="row">
            <input
              type="text"
              id="lastName"
              className="form-control"
              placeholder="Nazwisko"
              value={lastName}
              onChange={(e) => setLastName(e.target.value)}
              required
            />
          </div>
         ...
          <ReCAPTCHA
            sitekey="..."
            action="submit"
            verifyCallback={handleCaptchaChange}
            size="normal"
          />
          <button
            type="submit"
            className={`btn btn-primary ${!isFormValid ? 'disabled' : ''}`}
            disabled={!isFormValid}
          >
            Wyślij
          </button>
        </form>
      </div>

     ...
    </section>
  );
};

export default Member;

 

1 odpowiedź

0 głosów
odpowiedź 8 listopada 2024 przez linuxoid Nowicjusz (140 p.)
edycja 8 listopada 2024 przez linuxoid
komentarz 8 listopada 2024 przez linuxoid Nowicjusz (140 p.)
Kolejna sugestia, sprawdzić bibliotekę której używasz, tzn. przeczytać dokumentację

https://www.npmjs.com/package/react-google-recaptcha

Podobne pytania

0 głosów
1 odpowiedź 1,087 wizyt
pytanie zadane 14 stycznia 2023 w PHP przez kingkushlee Gaduła (3,960 p.)
0 głosów
1 odpowiedź 1,637 wizyt
pytanie zadane 30 grudnia 2020 w JavaScript przez WiktroH Mądrala (6,550 p.)
0 głosów
3 odpowiedzi 469 wizyt
pytanie zadane 3 listopada 2018 w PHP przez StEvo Nowicjusz (170 p.)

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,137 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2416p. - dia-Chann
  2. 2390p. - DziarnowskiJ
  3. 2317p. - raydeal
  4. 2300p. - Adrian Wieprzkowicz
  5. 2243p. - rucin93
  6. 2242p. - Łukasz Piwowar
  7. 2222p. - CC PL
  8. 2117p. - Łukasz Eckert
  9. 2082p. - Michal Drewniak
  10. 1957p. - Maurycy W
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1377p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...