Избегайте повторного отображения карты открытых слоев при изменении контекста

#reactjs #react-hooks #openlayers

#реагирует на #реагируют-крючки #открытые слои

Вопрос:

Я использую карту открытых слоев внутри React. Я прикрепляю его к DOM, используя SetTarget, вот так:

const MapObject = Карта использования(maplayers);

 useEffect(() =gt; {  mapObject.setTarget(mapRef.current);  return () =gt; mapObject amp;amp; mapObject.setTarget(undefined); },[mapObject]);   

Внутри useMap.js крюк Я пишу изменения в центре и масштабирование карты обратно в контекст:

 const {  zoom,  setZoom,  center,  setCenter, } = useContext(MapContext);  let mapObject = null;  var projection = new olProj.Projection({  code: 'EPSG:25832',  units: 'm', });  let options = {  target: 'map',  controls: olControl.defaults({  rotate: false,  zoom: false,  attributionOptions: {  collapsible: false,  },  }),  layers: maplayers,  view: new ol.View({  projection: projection,  center: center,  zoom: zoom  }), }; mapObject = new ol.Map(options);  mapObject.on('moveend', (e) =gt; {  console.log('moveend');  setCenter(() =gt; e.target.getView().getCenter());  setZoom(() =gt; e.target.getView().getZoom()); });  

Проблема сейчас в том, что вся карта обновляется каждый раз, когда меняется центр и масштаб. Как я могу этого избежать? Единственная идея, которая у меня есть, — использовать useEffect с массивом зависимостей, в котором отсутствует центр и масштаб, но я знаю, что это плохая практика и ее не следует делать.