在reactjs中连续使用setTimeout更改状态

时间:2017-10-31 10:50:38

标签: javascript reactjs settimeout

我正在尝试使用setTimeout方法更改循环中的状态。我在我的构造函数中声明了一个默认状态,如此

constructor(){
        super();

        this.state = {

            postType:'star_rating'

        }

    }

我想在5秒内改变状态,这是我能够实现的

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

问题是在5秒之后它应该将其改为另一种状态。再过5秒后,状态变化应该从头开始重复。 总而言之,国家应该像这样改变

A - > B - > C - > A - > B - > C - > A - > B - > C .......不断这应该发生。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

这只是一个简单的状态机。这是一种可能的实现方式:

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' };
}

{=INDEX($I$24:$I$37,MATCH(1,INDEX(($J$24:$J$37=LARGE(ABS($J$24:$J$37),ROWS(I$42:I42)))*(COUNTIF(I$42:I42,$I$24:$I$37)=0),),0))]}