#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
};