设置状态时出现未定义的错误

时间:2019-05-28 10:37:58

标签: javascript node.js reactjs

我正在使用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行使结果为空,有关如何解决此问题的任何建议?

1 个答案:

答案 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
    });