当我在useEffect
的依赖数组中包含currentPosition
或删除它时,代码会变成无限循环。为什么呢?
但是,当我将map
放入依赖数组中时,问题得到了解决。
import { useState, useEffect } from "react";
import { useMap } from "react-leaflet";
import L from "leaflet";
import icon from "./../constants/userIcon";
const UserMarker = () => {
const map = useMap();
const [currentPosition, setCurrentPosition] = useState([
48.856614,
2.3522219,
]);
useEffect(() => {
if (navigator.geolocation) {
let latlng = currentPosition;
const marker = L.marker(latlng, { icon })
.addTo(map)
.bindPopup("Vous êtes ici.");
map.panTo(latlng);
navigator.geolocation.getCurrentPosition(function (position) {
const pos = [position.coords.latitude, position.coords.longitude];
setCurrentPosition(pos);
marker.setLatLng(pos);
map.panTo(pos);
});
} else {
alert("Problème lors de la géolocalisation.");
}
}, [map]);
return null;
};
export default UserMarker;
currentPosition
是什么?它在您提供的代码中没有出现。 - Nicholas ToweruseEffect
的数组第二个参数中时,React将在每次变量更改时调用该函数。您每次调用useEffect
时都会更改map
变量,导致它一遍又一遍地被调用。您可以添加一个条件来检查它是否具有您期望的数据,并且如果有,则不更新map
。但是,文档显示的示例与您的示例非常不同,也许可以尝试使用react-leaflet的方式? - DCTID