无法呈现对HTML div的Promise响应

时间:2018-07-03 19:21:17

标签: javascript reactjs asynchronous promise

我有一个rect组件,在其componentDidMount方法下,我正在更新component的状态变量,并且该状态变量在render方法中用于在UI上显示。但是我的div总是空的,在控制台上我看到了错误。下面是我的组件和js文件的内容

App.js

componentDidMount () {
    ...
    this.someInternalMethod()
}

someInternalMethod() {
    someApiCall().then(result => {
      this.state.divContent.setContent(result)
    })
}

apiHelper.js

export function someApiCall() {

    // Build the api endpoint
    var url = "http://someurl";

    fetch(url).then(function(response) {
        if (response.status !== 200) {
          return;
        }
        response.json().then(function(data) {
            //this log is printing data after error 
          console.log(data);
          return formattedHtmlData(data));
        });
    }).catch(function(err) {
       console.log("Sorry data can't be loaded");
    });
}

Formatter.js

export function formattedHtmlData(data) {

    //do html formatting of data put inside div etc.
    and return
}

无法弄清我所缺少的。任何帮助表示赞赏。

PS:已经在stackoverflow上提到了这个问题-get promise value in react component

1 个答案:

答案 0 :(得分:1)

请确保您同时返回fetchresponse.json()调用,否则诺言链将被破坏,并且没有诺言供您在{{ 1}}。

then