2017-10-31 1 views
0

Ich versuche, die Zustände in einer Schleife mit SetTimeout-Methode zu ändern. Ich habe wie dieseÄndern von Zuständen mit setTimeout kontinuierlich in reactjs

constructor(){ 
     super(); 

     this.state = { 

      postType:'star_rating' 

     } 

    } 

Ich mag einen Standardzustand in meinem Konstruktor erklärte den Zustand in 5 Sekunden ändern, die ich in der Lage war, wie diese

setTimeout(() => { 
      this.setState({ 
       postType: 'image_poll' 
      }); 
     }, 5000); 

Das Problem nach weiteren 5 Sekunden zu erreichen, sollte es in einen anderen Staat ändern. Und nach weiteren 5 Sekunden sollte die Zustandsänderung von Anfang an wiederholt werden. Also sollte sich der Zustand wie folgt ändern:

A -> B -> C -> A -> B -> C -> A -> B -> C ....... das sollte kontinuierlich passieren . Wie kann ich das machen?

+2

ein Array verwenden und einen Zähler? Zähler zurücksetzen, wenn> 2? – mplungjan

+1

Wenn Sie eine Aktion wiederholt ausführen müssen, beachten Sie setInterval https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval. Sie können den aktuellen Status lesen, um zu entscheiden, zu welchem ​​Intervall in jedes Intervall gewechselt werden soll. – John

+0

@mplungjan können Sie mir bitte zeigen, wie? – CraZyDroiD

Antwort

2

Das ist nur eine einfache Zustandsmaschine. Dies ist eine mögliche Implementierung:

setTimeout(() => { 
    this.setState(getNextState()); 
}, 5000); 

und

getNextState() { 
    if (this.state.postType === 'star_rating') 
    return { postType: 'image_poll' }; 
    if (this.state.postType === 'image_poll') 
    return { postType: 'third_state' }; 
    return { postType: 'star_rating' }; 
} 
Verwandte Themen