我无法调用this.function:TypeError:this.fetchData不是函数

时间:2019-12-15 16:49:05

标签: javascript typescript

当我调用this.fetchData();时,我收到此错误“ TypeError:this.fetchData不是一个函数”,我认为this丢失了,因此我尝试使用bind或箭头函数但这也不起作用,如何解决呢?

class ShowResults extends Component {
    getData() {
        return setTimeout(function() {
            this.fetchData();
          }, 2000); //tried to use bind but did not work--> .bind(this);
        }
      }

      async fetchData() {
        //code
      }
}

3 个答案:

答案 0 :(得分:0)

如您所说,您需要.bind(this),因为您不在setTimeout函数内部;您能发送更多代码吗,括号的数目有些奇怪。

答案 1 :(得分:0)

我创建了一个示例,其中使用构造函数或onclick绑定了我。

--cb_explore

  constructor(){
    super();
    this.getData = this.getData.bind(this);
  }

  getData() {
    return setTimeout(() => {
      this.fetchData();
    }, 0) //tried to use bind but did not work--> .bind(this);
  };


  async fetchData() {
    console.log('its called');
  }

答案 2 :(得分:0)

您还可以按以下方式调用方法:

<header className="App-header" onClick={() => this.getData()}></header>

因此您无需绑定。它本身就做。