Вы должны обернуть этот код в эффект, поскольку этот код изменяет состояние с помощью setLocation
, который запускает другой рендер, который рекурсивно запускает ваш код.
useEffect(()=> {
if(!navigator.geolocation) {
console.log("gelolocation is not supported by your browser");
}
else {
navigator.geolocation.getCurrentPosition((position) => {
setLocation({
lat: position.coords.latitude,
lng: position.coords.longitude
});console.log(lat);
},
(err) => {
console.log("Error getting location");
});
}
}, [])
Пустой массив как Второй аргумент для выполнения функции гарантирует, что этот код запускается только один раз, во время первого рендеринга компонента.