Я использую @esri/react-arcgis
для отображения основной c карты. Цель состоит в том, чтобы отправить запрос при щелчке, чтобы найти некоторые данные для области, по которой щелкнули.
Это моя карта:
<Map
onLoad={handleMapLoad}
onFail={handleMapLoadFail}
onClick={handleMapClick}
... // bunch of other properties (basemap, styles etc)
></Map>
Моя проблема в том, что когда onClick
срабатывает (и handleMapClick
вызывается), значения из useState
компонента всегда являются начальным значением. Он определяется так: const [mapViewReference, setMapViewReference] = useState(null);
.
Он не всегда должен иметь значение null, потому что:
-
handleMapLoad
вызывается в начале. Он устанавливает следующее состояние: setMapViewReference(view);
, тогда как view
- свойство, которое я получаю напрямую из библиотеки esri. - После этого я нажимаю на карту, и выполняется обратный вызов
- Если Я вызываю
handleMapClick
с фиктивной кнопки, состояние / значение будет правильным.
Это что-то, что может быть обработано useCallback
или другим хуком? Я не уверен, что это проблема с библиотекой esri ...
Это прямо перед моим return
(функциональный компонент):
const handleMapClick = async event => {
console.log(mapViewReference); // This is always null, unless I call the function manually from a dummy button
const point = mapViewReference.toMap(event);
const response = await featureLayerReference.queryFeatures({...});
};