javascript / expert
Snippet
Private Klassenfelder mit WeakRef-Caching für zustandsbehaftete React-Abonnements
In objektorientierten Zustandsarchitekturen für React erzwingt die Kapselung von Listener-Registrierungen mittels privater ES2022-Klassenfelder ('#') echte Laufzeitkapselung. Die Kombination privater Felder mit WeakRef ermöglicht das Speichern von Nutzdaten-Referenzen, ohne die Garbage Collection zu verhindern.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
export class ReactSubscriptionManager {#listeners = new Set();#cacheRef = null;subscribe(listener) {this.#listeners.add(listener);return () => this.#listeners.delete(listener);}setCachedPayload(payload) {this.#cacheRef = new WeakRef(payload);}getCachedPayload() {return this.#cacheRef ? this.#cacheRef.deref() : undefined;}}
react
Erklärung
1
#listeners = new Set();
Deklariert ein privates Instanzfeld, auf das außerhalb von Klassenmethoden nicht zugegriffen werden kann.
2
this.#cacheRef = new WeakRef(payload);
Hält eine schwache Referenz auf Zustandsobjekte, was die Garbage Collection ermöglicht.
3
return this.#cacheRef ? this.#cacheRef.deref() : undefined;
Derefenziert das Zielobjekt sicher oder gibt undefined zurück, falls es vom GC bereinigt wurde.