我正在使用API从Amazon API中提取数据,并且正在使用react js。
问题是当我提取它们并将其保存为错误状态时,但是,我从API获取结果。该函数需要花费一些时间从API中获取数据,我正在使用一种提取数据的方法,该方法适用于node js,但也可以在react中工作,并且我正在获取结果,但无法将其保存为状态。这是下面的代码:
let getReport={
path:'/',
query:{
Action:'GetReport',
ReportId:'14941942615018036',
Version:'2009-01-01',
}
};
let temp=null;
mws.request(getReport, function(e, result) {
temp=result;
this.setState({amazon_data:result}) // gives undefined error
});
我认为原因是函数执行需要花费时间,并且运行setstate行使结果为空,有关如何解决此问题的任何建议?
答案 0 :(得分:2)
之所以会发生这种情况,是因为this.setState
不属于函数内this
范围的一部分。
let getReport={
path:'/',
query:{
Action:'GetReport',
ReportId:'14941942615018036',
Version:'2009-01-01',
}
};
let temp=null;
const _this = this;
mws.request(getReport, function(e, result) {
temp=result;
_this.setState({amazon_data:result}) // this works because _this references the outer this
});
这应该可行,或者您可以使用如下箭头功能。
let getReport={
path:'/',
query:{
Action:'GetReport',
ReportId:'14941942615018036',
Version:'2009-01-01',
}
};
let temp=null;
mws.request(getReport, (e, result) => {
temp=result;
this.setState({amazon_data:result}) // this works because the arrow function binds the outer this to the function
});