React · Middle · Frage 11 von 75

Warum bleibt der Zähler bei 1 stehen?

const [count, setCount] = useState(0);

useEffect(() => {
  const id = setInterval(() => setCount(count + 1), 1000);
  return () => clearInterval(id);
}, []);
Antwort zeigen

Richtige Antwort: Der Callback hält count = 0 aus dem ersten Rendering fest

Erklärung

Der Effekt mit [] wird einmal erzeugt und sieht count aus dem ersten Rendering. Jeder Tick setzt 0 + 1. Lösungen: ein funktionales Update setCount(c => c + 1) (am besten), count zu den Abhängigkeiten hinzufügen (das Intervall wird neu erzeugt) oder den Wert in einer ref halten.

Zum Weiterlesen

Fehler in der Frage

React · Middle · Frage 11

Teste dich selbst

Mach den Test React · Middle: Fragen und Antworten werden gemischt, und am Ende wartet eine Übersicht der Fehler.

Diesen Test machen