当我调用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
}
}
答案 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>
因此您无需绑定。它本身就做。