代码之家  ›  专栏  ›  技术社区  ›  CraZyDroiD

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

  •  0
  • CraZyDroiD  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  2
  •   Héctor    7 年前

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

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