Je travaille avec Mapbox et souhaite afficher l'emplacement en fonction des coordonnées de l'utilisateur via son adresse IP. J'utilise deux API pour ce faire, un pour obtenir l'adresse IP et le second pour obtenir le ...

0
Rowan Frank 16 mars 2021 à 18:54

2 réponses

Meilleure réponse

Vous pouvez attendre que getIP () termine la récupération, puis l'exécuter en utilisant async () dans useEffect

useEffect(() => {
     async getData() {
         await getIP();
         getGeoloc();
     }
     getData();
  }, []);
0
Vo Quoc Thang 16 mars 2021 à 16:02

Oui, il vous suffit d'appeler l'autre API au retour de la première:

const getIP = async () => {
    const data = await fetch("https://api.ipify.org/?format=json");
    const response = await data.json();
    setIp(response.ip);
    const getGeoloc = async () => {
        const data = await fetch(
            `http://api.ipstack.com/${ip}?access_key=${KEY}`
        );
        const response = await data.json();
        setLat(response.latitude);
        setLong(response.longitude);
    };
};

Désolé si ce code est faux, mon intention était seulement de montrer la logique, je ne programme pas en TypeScript / CoffeScript.

1
Hector Vido 16 mars 2021 à 16:00