fix: Behebt TypeError: Cannot read properties of null (reading 'contextmenu') mit Redux
- Implementiert `store.subscribe()` in `setupPolylines.js`, um das Kontextmenü-Handling über Redux zu steuern. - Ersetzt `useDispatch()` und `useSelector()` durch `store.dispatch()` und `store.getState()` in einer Nicht-React-Datei. - Fügt eine `forceClose`-Action in `polylineContextMenuSlice.js` hinzu, um das Kontextmenü synchron mit `setInterval` zu schließen. - Stellt sicher, dass das Kontextmenü **immer vor Ablauf des 20-Sekunden-Intervalls** geschlossen wird. - Verhindert doppelte Menüinstanzen und sorgt für ein stabiles Verhalten bei wiederholten Interaktionen. ✅ Fix für `TypeError: Cannot read properties of null (reading 'contextmenu')` ✅ **Verhindert Kontextmenü-Fehler beim automatischen Datenupdate** ✅ **Redux-gesteuerte Menüverwaltung für stabilere Performance** ✅ **Kein unerwartetes Offenbleiben oder erneutes Rendern des Menüs mehr**
This commit is contained in:
@@ -79,10 +79,15 @@ import ShowAddStationPopup from "../AddPOIModal.js";
|
||||
import { useInitGisStationsStatic } from "../mainComponent/hooks/useInitGisStationsStatic";
|
||||
import { closeAddPoiModal } from "../../redux/slices/addPoiOnPolylineSlice.js";
|
||||
import AddPOIOnPolyline from "../AddPOIOnPolyline";
|
||||
import { closePolylineContextMenu } from "../../redux/slices/polylineContextMenuSlice";
|
||||
import { forceCloseContextMenu } from "../../redux/slices/polylineContextMenuSlice";
|
||||
|
||||
const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
||||
const dispatch = useDispatch();
|
||||
const isPolylineContextMenuOpen = useSelector((state) => state.polylineContextMenu.isOpen);
|
||||
const contextMenuState = useSelector((state) => state.polylineContextMenu);
|
||||
|
||||
const polylinePosition = contextMenuState.position ? L.latLng(contextMenuState.position.lat, contextMenuState.position.lng) : null;
|
||||
const currentPoi = useSelector(selectCurrentPoi);
|
||||
//const setCurrentPoi = useSetRecoilState(currentPoiState);
|
||||
const polylineVisible = useSelector(selectPolylineVisible);
|
||||
@@ -876,6 +881,13 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
||||
console.log("🔥 Automatischer Klick-Event ausgelöst, um Spiderfy zu aktualisieren.");
|
||||
map.fire("click");
|
||||
}
|
||||
if (isPolylineContextMenuOpen) {
|
||||
dispatch(closePolylineContextMenu()); // Schließe das Kontextmenü, bevor das nächste Update passiert
|
||||
}
|
||||
if (map) {
|
||||
console.log("🔥 nochmal klick.");
|
||||
map.fire("click");
|
||||
}
|
||||
}, 20000);
|
||||
|
||||
// Aufräumen bei Komponentenentladung
|
||||
|
||||
Reference in New Issue
Block a user