feat: Marker-Cleanup zur Vermeidung von Memory Leaks implementiert
- cleanupMarkers() Utility in /utils/common/cleanupMarkers.js erstellt - Marker-Cleanup in MapComponent.js vor createAndSetDevices() integriert - createAndSetDevices.js von Cleanup-Verantwortung befreit (reine Erzeugung) - setupPOIs.js erweitert um cleanupMarkers() vor Layer-Neuerstellung - poiUtils.js und markerUtils.js angepasst: cleanupMarkers() ersetzt .remove() - Memory Leaks durch verwaiste Tooltips, Events und Marker behoben - Grundlage für wiederverwendbare Marker-Cleanup-Logik für POIs, Geräte, Linien geschaffen
This commit is contained in:
21
TODO.md
21
TODO.md
@@ -22,3 +22,24 @@
|
||||
- [x] TODO: Möglichkeit bevor in Gitea hochgeladen, .env.local anpassen, vielleicht mit husky Wenn
|
||||
git push genutzt wird soll für Produktionsumgebung angepasst werden, Vorschlag ---> .env.local
|
||||
und .env.production für Entwicklungsumgebung und Produktionsumgebung automatische Switch
|
||||
|
||||
## 🧹 Memory Leaks prüfen
|
||||
|
||||
- [ ] **MapComponent.js** - [ ] `setInterval(...)` (1x) - [ ] `setTimeout(...)` (2x) - [ ]
|
||||
`window.xyz = ...` (4x) – globale Variablen - [ ] `map.on(...)` (2x) - [ ]
|
||||
`addEventListener(...)` (1x) - 📌 Problematisch, wenn `clearInterval`, `clearTimeout`,
|
||||
`map.off(...)` oder `removeEventListener(...)` nicht im useEffect-Cleanup gemacht werden. →
|
||||
Speicher kann anwachsen, besonders bei Hot-Reload oder Navigation im iFrame.
|
||||
|
||||
- [ ] **useAreaMarkersLayer.js** - [ ] `setInterval(...)` - [ ] `addEventListener(...)` - 📌 Auch
|
||||
hier muss geprüft werden, ob beim Unmounting der Komponente `clearInterval()` und
|
||||
`removeEventListener()` aufgerufen wird.
|
||||
|
||||
- [ ] **AddPOIModal.js** - [ ] `setTimeout(...)` - 📌 Prüfen, ob der Timeout vor unmount gecleart
|
||||
wird (z. B. bei schnellem Öffnen und Schließen des Modals).
|
||||
|
||||
- [ ] **MapLayersControlPanel.js** - [ ] `setTimeout(...)`
|
||||
|
||||
- [ ] **useDataUpdater.js** - [ ] `setInterval(...)` - 📌 Sehr wahrscheinlich ein regelmäßiger
|
||||
Polling-Mechanismus → unbedingt prüfen, ob `clearInterval()` im useEffect-Cleanup enthalten
|
||||
ist.
|
||||
|
||||
Reference in New Issue
Block a user