Files
nodeMap/redux/slices/polylineContextMenuSlice.js
ISA 8ab1c53996 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**
2025-03-10 13:49:11 +01:00

33 lines
1.1 KiB
JavaScript

// redux/slices/polylineContextMenuSlice.js
import { createSlice } from "@reduxjs/toolkit";
const initialState = {
isOpen: false,
position: null, // Serialisierbarer Wert { lat, lng }
forceClose: false, // Neuer State, um das Schließen zu erzwingen
};
const polylineContextMenuSlice = createSlice({
name: "polylineContextMenu",
initialState,
reducers: {
openPolylineContextMenu: (state, action) => {
state.isOpen = true;
state.position = { lat: action.payload.position.lat, lng: action.payload.position.lng };
state.forceClose = false; // Beim Öffnen zurücksetzen
},
closePolylineContextMenu: (state) => {
state.isOpen = false;
state.position = null;
},
forceCloseContextMenu: (state) => {
state.isOpen = false;
state.position = null;
state.forceClose = true; // Setzt Flagge, um Schließen zu signalisieren
},
},
});
export const { openPolylineContextMenu, closePolylineContextMenu, forceCloseContextMenu } = polylineContextMenuSlice.actions;
export default polylineContextMenuSlice.reducer;