5. Technikwissen – Kurz erklärt

5.8. useState

useRef – Referenzen auf Komponenten oder Werte

Mit dem React-Hook useRef() können Sie veränderliche Werte speichern, die beim Aktualisieren des UI nicht verloren gehen – zum Beispiel Zeitgeber (setInterval) oder Sensor-Abos.

const intervalRef = useRef(null);

Der aktuelle Wert wird über intervalRef.current angesprochen. Beispiel für das Stoppen eines Countdowns:

clearInterval(intervalRef.current);

Auch für den Zugriff auf Sensoren wie den Accelerometer wird useRef verwendet, um später z. B. den Sensor wieder zu deaktivieren:


sensorRef.current = Accelerometer.addListener(({ x, y, z }) => {
  // ...
});

sensorRef.current.remove(); // Deaktiviert den Sensor

Tipp: useRef ist ideal, wenn Sie eine Art "Behälter" für veränderliche Objekte brauchen, die nicht jedes Mal neu gerendert werden sollen – z. B. laufende Zeitgeber oder Sensor-Abos.


setState(prev => ...) – Vorherigen Zustand sicher aktualisieren

Wenn Sie eine State-Variable aktualisieren möchten, die auf ihrem bisherigen Zustand basiert (z. B. ein Array erweitern), ist es sinnvoll, die sogenannte funktionale Schreibweise zu verwenden:


setBewegungen(prev => [...prev, neuerWert]);

Dadurch wird sichergestellt, dass Sie immer den aktuellen Zustand erhalten – selbst wenn andere Updates gleichzeitig laufen. Diese Methode ist besonders nützlich bei Sensorwerten oder anderen schnellen Updates.

Tipp: Vermeiden Sie bei Arrays die direkte Verwendung von bewegungen in setBewegungen([...bewegungen, neuerWert]), da es sein kann, dass bewegungen nicht den aktuellsten Stand enthält.

Herausgeber: Land Baden-Württemberg, vertreten durch das Zentrum für Schulqualität und Lehrerbildung (ZSL), Heilbronner Straße 314, 70469 Stuttgart, Telefon 0711/21859-0, poststelle@zsl.kv.bwl.de
Verantwortlich im Sinne des Presserechts: ZSL, Irmgard Mühlhuber, Ref. 24 "Digitalisierung, Medienbildung", Heilbronner Straße 314, 70469 Stuttgart, Telefon 0711/21859-240, digitalebildung@zsl.kv.bwl.de
Kontakt zum/r behördlichen Datenschutzbeauftragte/n: datenschutz@zsl.kv.bwl.de