MudGuard: React - state Eigenschaftswert wird über timeout() geändert und soll mit Verzögerung gerendert werden

Beitrag lesen

problematische Seite

Hi,

Es wird aber immer nur der letzte Wert gerendert. Warum sieht man nicht, wie sich der Wert alle 3 Sekunden ändert?

Weil er sich nicht alle 3 Sekunden ändert.

Methode (von <App />

  handleSpeak = () => {
    for (let x = 0; x < 3; x++) {
       console.log('speak sentence: ', this.state.sentences[x]);
       setTimeout(this.setState({text: this.state.sentences[x]}), 3000);
    }
  }

hier werden in sehr kurzem Abstand (so lange, wie der JS-Interpreter braucht, um den nächsten Schleifendurchlauf abzuarbeiten, also irgendwas im Bereich von Milli- oder noch kleineren Sekunden) drei Timeouts für "in 3 Sekunden" erzeugt. Diese laufen dann auch nach 3 Sekunden in sehr kurzem Abstand ab.

Du könntest: den 2. Timeout nach 6 Sekunden, den 3. nach 9 Sekunden ablaufen lassen.
Oder den 2. Timeout erst dann setzen, wenn der 1. abgelaufen ist, den 3., wenn der 2. abgelaufen ist.
Oder …

cu,
Andreas a/k/a MudGuard