使用setTimeout Reactjs时,setState不是函数

时间:2017-12-10 10:05:49

标签: javascript reactjs settimeout

我们如何在setTimeout中使用setState。我在构造函数中声明了一个属性。我在this.setState({ count: index });内使用了setTimeout,它会抛出类似Uncaught TypeError: this.setState is not a function

的错误
constructor(props) {
    super(props);
    this.state = {
      count: 0
    };
    this.onMouseDown = this.onMouseDown.bind(this);
  }
onMouseDown() {
    this.timer();
  }
timer() {
    for (var i = 1; i <= 90; i++) {
      (function(index) {
        setTimeout(function() {
          this.setState({ count: index });
        }, index * 10);
      })(i);
    }
  }

我尝试了很多,不知道如何解决这个问题。为什么这是错的?。请让我摆脱这个问题..

1 个答案:

答案 0 :(得分:0)

this未引用此组件。setState在组件this上定义

 timer() {
    const objThis  = this; //store this.
        for (var i = 1; i <= 90; i++) {
          (function(index) {
            setTimeout(function() {
              objThis.setState({ count: index });
            }, index * 10);
          })(i);
        }
      }