Почему я получаю слишком много ответов от вызова API

#reactjs #api #geolocation #use-effect

#reactjs #API #геолокация #использование-эффект

Вопрос:

Я не могу остановить вызов api. каким должен быть правильный подход к решению этой ситуации.

 const successCallback = (position) => {
    console.log("in success");
    setCoord({ ...coord, latitude: position.coords.latitude.toFixed(4), longitude: position.coords.longitude.toFixed(4) })
  }
  const failCallback = () => {
    alert("Give Location Permission for currect Location.")
  }
  if (window.navigator.geolocation) {
    window.navigator.geolocation.getCurrentPosition(successCallback, failCallback)
  } else {
    alert("Geolocation is not supported by this browser.")
  }
  const url3 = `http://api.openweathermap.org/data/2.5/weather?lat=${coord.latitude}amp;lon=${coord.longitude}amp;appid=MYKEY`
  const fetchWeather = async () => {
    const responce = await Axios.get(url3)
    console.log(responce);
  }
  useEffect(() => {
    fetchWeather()
  }, [coord])
 

Ответ №1:

Добавьте параметры, чтобы регулировать частоту вызова successCallback

 const options = {
  enableHighAccuracy: true,
  timeout: 10000,
  maximumAge: 20000
};
window.navigator.geolocation.getCurrentPosition(successCallback, failCallback, options)
 

или, если вы хотите, чтобы он вызывался только один раз, используйте

 const options = {
  timeout: 0
};