如何解决"这是未定义的"映射后

时间:2017-12-27 10:19:47

标签: javascript reactjs

我使用自定义API来获取数据。我有一个包含要获取的每个数据的对象,因此一切都是动态的。此时必须使用 fetch()函数获取数据。现在,在安装组件(componentDidMount)时发出了请求。由于我使用对象来获取每个Json数据,因此我必须映射此对象。

componentDidMount(){
    CATEGORIES.map(function(category){
        this.fetchApiData(category.key);
    });
}

现在我已正确定义了 fetchApiData()。它实际上没有映射,但在映射对象时没有。

2 个答案:

答案 0 :(得分:1)

您正在尝试访问另一个无法访问fetchApiData属性的函数内的this。要使用封闭上下文,请使用基于胖箭头的函数:

componentDidMount(){
    CATEGORIES.map((category) => {
        this.fetchApiData(category.key);
    });
}

答案 1 :(得分:0)

这种情况的上下文在地图的回调函数中发生了变化。您可以将其分配给变量并在地图的回调函数中使用它。

componentDidMount(){
    var that = this;
    CATEGORIES.map(function(category){
        that.fetchApiData(category.key);
    });
}