Javascript 如何解决;这是未定义的;测绘后

Javascript 如何解决;这是未定义的;测绘后,javascript,reactjs,Javascript,Reactjs,我正在使用自定义API获取数据。我有一个对象,其中包含要获取的每个数据,因此所有内容都是动态的。此时必须使用fetch()函数获取数据。现在,在安装组件时发出请求(componentDidMount)。因为我使用一个对象来获取每个Json数据,所以我必须映射这个对象 componentDidMount(){ CATEGORIES.map(function(category){ this.fetchApiData(category.key); }); } 现在我已

我正在使用自定义API获取数据。我有一个对象,其中包含要获取的每个数据,因此所有内容都是动态的。此时必须使用fetch()函数获取数据。现在,在安装组件时发出请求(componentDidMount)。因为我使用一个对象来获取每个Json数据,所以我必须映射这个对象

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

现在我已经正确地定义了我的fetchApiData()。它实际上在没有映射的情况下工作,但在映射对象时不起作用。

此操作的上下文在映射的回调函数中发生更改。您可以将其分配给变量,并在映射的回调函数中使用该变量

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

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

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

嗯……这是一个区别的游戏。你改变了什么?为什么它要解决这个问题?@Quentin箭头函数将上下文绑定到
这个
,原来的问题使用了一个正常的函数,但没有。令人惊讶的是,这个函数工作得很好!谢谢@Blake@Oluwatobiloba您可以在此处查看一些示例以了解更多信息: